Я использую угловые 6 и localStorage
для сохранения токена авторизации.
код, который получает авторизацию от localStorage:
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': 'Basic ' + JSON.parse(localStorage.getItem('userdetails')).token
})
};
и используйте его как
getCities() {
return this.http.get<any>('http://myservice.com/api/cities', httpOptions);
}
когда я выхожу, я очищаю localStorage
и перенаправляю на домашнюю страницу как
localStorage.clear();
this.router.navigate(['/']);
при входе в систему я устанавливаю элемент userdetails
localStorage как
this.loginService.login(obj)
.subscribe(
auth => {
localStorage.setItem('userdetails', JSON.stringify(auth));
this.router.navigate(['authentication/auth/redirectpage']);
}
);
Мой объект аутентификации, который я сохраняю, выглядит так:
{"fullname":"Test User","username":"TestUser1","authlevel":"Q","designation":"Tester 1","token":"First_Login_Token"}
При первом входе в систему все работает нормально. Когда я выхожу из системы, элемент userdetails
localStorage разрушается (если этот флажок установлен на вкладке Локальное хранилище в приложении Chrome DevTools.
Когда я перехожу с другим пользователем, мой userdetails
корректно обновляется до
{"fullname":"Test User 2","username":"TestUser2","authlevel":"R","designation":"Tester 2","token":"Second_Login_Token"}
НО
localStorage.getItem('userdetails')).token
в locationService возвращает только First_Login_Token
.
Если я перезагружаю страницу, она правильно принимает Second_Login_Token
.
Не уверен, что происходит не так.