我有一个非常基本的属性来检查令牌是否已过期:
get isExpired():boolean {
return !!localStorage &&
!!localStorage.getItem("token") &&
!this.jwt.isTokenExpired(localStorage.getItem("token"));
}
以角度观看此属性的最佳做法是什么?
这可能不是最好的做法,但在AngularJs中我可以使用$scope.$watch
在Angular 4中有没有类似的方法来实现相同的功能?
提前致谢!
答案 0 :(得分:0)
我看到了不同的解决方案
使用警卫检查每次路线更改时的令牌到期日期 https://angular.io/guide/router#milestone-5-route-guards
创建一个每秒检查一次令牌到期的服务,
Observable
.interval(1000)
.timeInterval()
.flatMap(() =>
this.authenticationService.isTokenExpired())
.filter(isExpired => isExpired)
.subscribe(isExpired => {
this.router.navigateByUrl("/login")
});
这假定this.authenticationService.isTokenExpired()
返回Observable<boolean>