我已经实现了登录前和登录后保护,以便某些用户无法访问所有页面。我的问题是,当用户未登录时,当他们尝试进入未经授权的页面时,例如“localhost:4200/restricted_page”,它应该被重定向到登录页面“localhost:4200/login”。但我无法重定向到登录页面。现在它只重定向到 localhost:4200 。
我应该在哪里修复代码?
登录前.guard
export class BeforeLoginGuard implements CanActivate {
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
return !this._tokenService.loggedIn();
}
constructor(private _tokenService: TokenService) { }
}
登录后守卫
export class AfterLoginGuard implements CanActivate {
constructor(private _tokenService: TokenService) { }
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
return this._tokenService.loggedIn();
}
}
令牌服务
export class TokenService {
payload(token) {
const payload = token.split('.')[1];
//decoding
if (typeof (payload) !== 'undefined')
return JSON.parse(atob(payload));
return false;
}
loggedIn() {
// return this.isValid();
const token = this.getToken();
console.log("token", token);
if (token) {
const payload = this.payload(token);
if (payload) {
return Object.values(this.iss).indexOf(payload.iss) > -1 ? true : false;
}
}
return false;
}
}