Angular 7-刷新浏览器时AuthGuard不工作
我面临一个关于平均堆栈应用程序的AuthGaurd的问题。当我浏览页面链接时,AuthGaardAngular 7-刷新浏览器时AuthGuard不工作,angular,angular-services,auth-guard,Angular,Angular Services,Auth Guard,我面临一个关于平均堆栈应用程序的AuthGaurd的问题。当我浏览页面链接时,AuthGaardcanActivate工作正常。但当刷新页面时-页面不工作(无限时间保持加载状态) 下面是AuthGuard实现- @Injectable() export class AuthGuard implements CanActivate { constructor(@Inject(PLATFORM_ID) private platform: any, private router: Router,
canActivate
工作正常。但当刷新页面时-页面不工作(无限时间保持加载状态)
下面是AuthGuard实现-
@Injectable()
export class AuthGuard implements CanActivate {
constructor(@Inject(PLATFORM_ID) private platform: any, private router: Router, private logInService: LoginService) { }
canActivate(route: ActivatedRouteSnapshot): boolean | Observable<boolean> | Promise<boolean> {
if (isPlatformBrowser(this.platform)) {
if (this.logInService.loggedIn && !this.logInService.isTokenExpired(this.logInService.getToken())) {
return true;
}
this.router.navigate(['/user/login']);
return false;
}
}
}
我搞不懂这个问题。提前谢谢 您有什么错误吗 我想问题应该是,如果
if(isPlatformBrowser(this.platform))
返回false。我需要在浏览器中检查它,从服务器端它将返回false
public get loggedIn(): boolean {
if (isPlatformBrowser(this.platform)) {
return (localStorage.getItem(TOKEN_NAME) !== null);
}
}
isTokenExpired(token?: string): boolean {
if (isPlatformBrowser(this.platform)) {
if(!token) token = this.getToken();
if(!token) return true;
const date = this.getTokenExpirationDate(token);
if(date === undefined) return false;
return !(date.valueOf() > new Date().valueOf());
}
}
getTokenExpirationDate(token: string): Date {
const decoded = jwt_decode(token);
if (decoded.exp === undefined) return null;
const date = new Date(0);
date.setUTCSeconds(decoded.exp);
return date;
}