Я хотел бы иметь таймер, который автоматически запускает logout()
в моем authentication.service
в определенное время независимо от того, на какой странице я нахожусь в моем приложении.
Я попытался создать таймер на моем AuthenticationService
, но проблема в том, что если я перенаправлю на другую страницу ... этот таймер будет потерян.
authentication.service:
@Injectable()
export class AuthenticationService {
ticks =0;
timer :Observable<number>;
constructor(private http: Http, private _JwtHelper: JwtHelper, private router: Router) {
}
isLoggedIn() {
console.log('authentication service islogged in called ')
let token = localStorage.getItem('token');
if (!token) { return false; }
else {
return true;
}
}
login(credentials) {
return this.http.post('http://somthing/api/login/login',
credentials)
.map(response => {
let result = response.json();
if (result && result.token) {
localStorage.setItem('token', result.token);
this.timer = Observable.timer(7000,1000);
this.timer.subscribe(t=> {
this.func(this);
});
return true;
}
return false;
});
}
func(t){
this.logout();
t.unsubscribe();
}
logout(): void {
localStorage.removeItem('token');
this.router.navigate(['/login']);
}
}
Я думал о создании таймера на app.component, но затем я хочу подписаться на таймер только при вызове функции входа службы аутентификации из формы входа.