Angular 7 Необычное поведение Когда пользователь возвращается к входу в систему, он может получить доступ к другим компонентам, если он использовал клавишу перемотки браузера. - PullRequest
0 голосов
/ 27 ноября 2018

У меня странное поведение с моим угловым приложением.

Приложение содержит кнопку Go Back, поэтому пользователь может использовать ее при необходимости:

goBack()
{
    this.location.back();
}

С locationявляется экземпляром Location импортированной формы @angular/common.

Когда пользователь нажимает на нее и отправляет обратно в компонент входа в систему, и при загрузке LoginComponent я очищаю все учетные данные и применяюпользователю снова войти в систему.

Проблема в том, что когда пользователь возвращается в компонент входа в систему, возможны 2 сценария:

  1. Он может перейти вперед, используя стрелку браузера ипродолжить работу и добавлять информацию в обычном режиме;
  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?Или есть другое решение?Или я должен проверить предыдущее местоположение, и если оно равно логину, я отключаю кнопку возврата?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...