Я хочу, чтобы приложение автоматически выходило из системы по истечении срока действия.
Код углового клиента:
login(credentials) {
return this.http.post('http://something/api/login/',
credentials)
.map(response => {
let result = response.json();
if (result && result.token) {
localStorage.setItem('token', result.token);
return true;
}
return false;
});
}
Поскольку токен содержит:
"exp": 1526016179 // expiry time
Возможно, я мог бы сделать это в app.component, который имеет <router-outlet></router-outlet>
:
ngOnInit() {
let token = localStorage.getItem('token');
timer:DateTime = new Date(_JwtHelper.decodeToken(token).exp);
if (timer && (Date.now() > timer)) {
logout();
}
}
Но проблема этого подхода заключается в том, что он не выйдет из системы автоматически. Пользователю потребовалось бы какое-то действие, такое как нажатие кнопки, чтобы вызвать ngOnInit()
из app.component
(что я даже не уверен, будет ли оно срабатывать каждый раз, когда в любом месте на сайте будет нажатие кнопки, вероятно, нет).
Приложение должно автоматически выйти из системы и перенаправить на страницу входа, как только истечет время истечения.