У меня странное поведение с моим угловым приложением.
Приложение содержит кнопку Go Back
, поэтому пользователь может использовать ее при необходимости:
goBack()
{
this.location.back();
}
С location
является экземпляром Location
импортированной формы @angular/common
.
Когда пользователь нажимает на нее и отправляет обратно в компонент входа в систему, и при загрузке LoginComponent
я очищаю все учетные данные и применяюпользователю снова войти в систему.
Проблема в том, что когда пользователь возвращается в компонент входа в систему, возможны 2 сценария:
- Он может перейти вперед, используя стрелку браузера ипродолжить работу и добавлять информацию в обычном режиме;
- Второй сценарий: если он войдет в систему и перейдет к последнему компоненту, только если он обновит страницу, мой сценарий вступит в силу и заставит его войти снова.
Мне нужен второй, и я хочу завершить сценарий 1.
Следующий скрипт - тот, который я использую внутри компонента login
, чтобы очистить учетные данные, если пользовательпереместился в лоДжин:
ngOnInit() {
//If a uset gets back to login component, he should be logged out
this.logout();
this.globalVar.username = '';
this.globalVar.jwt_token = '';
this.globalVar.user_role = '';
this.globalVar.user_id = '' ;
this.globalVar.user_logged = false;
localStorage.removeItem('jwt');
}
logout()
метод:
logout() {
this.authService.logoutService();
}
logoutService()
метод:
logoutService() {
localStorage.removeItem('jwt');
localStorage.removeItem('user_id');
this.globalVar.user_logged = false;
this.globalVar.user_id = '';
this.globalVar.user_role = '';
this.globalVar.username = '';
this.globalVar.jwt_token = '';
this.router.navigate(['/login']);
}
Только и только если пользователь вернулся по ошибкечтобы войти в компонент, а затем перешел вперед, используя стрелку браузера, и он обновил страницу, предыдущий сценарий работает.
Мне нужно запретить пользователю переходить на другой компонент без повторного входа в систему.
Нужно ли создавать службу приложения для одного приложения и использовать ее в каждом компоненте, чтобы проверить, пусты ли учетные данные и неверно ли user_logged
, чтобы вернуться к login
?Или есть другое решение?Или я должен проверить предыдущее местоположение, и если оно равно логину, я отключаю кнопку возврата?