【发布时间】:2019-11-14 15:30:02
【问题描述】:
我有一个像这样设置的身份验证类:
export class AuthService {
user = new Subject<string>();
login(name: string) {
this.user.next(name);
}
}
我设置了一个身份验证保护来检查我的用户主题是否具有这样的值:
export class AuthGuard implements CanActivate {
constructor(private authService: AuthService, private router: Router) { }
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
return this.authService.user
.pipe(
map(user => {
const isAuth = !!user;
if (isAuth) {
return true;
}
return this.router.createUrlTree(['/login']);
})
);
}
}
我将打印语句放在返回中,它们永远不会被调用。该页面永远不会加载,也永远不会重定向。如果我只是返回 true 或 false 它可以工作,但是通过返回我的 authService.user 似乎什么都没有发生。
【问题讨论】:
-
你能把你的守卫的全部内容贴出来吗?
-
@RafiHenig 我用全班更新了我的问题。
-
身份验证总是假的你为什么使用
const isAuth = !!user;!!user
标签: angular angular-router-guards