我正在使用Angular 6和route guard来保护一个编辑路由,它应该:
-
检查以确保有一个已登录的用户(从存储中的jwt令牌获取用户对象)。完成。
-
验证url参数中的id是否与令牌中用户的id匹配。
我的路线是这样的
/members/:id/edit
我已经有一个名为
doesUserIdInUrlMatchUserIdInToken
它将返回一个布尔值。
我的auth guard canActivate函数是:
export class UserEditAuthGuard implements CanActivate {
constructor(
private auth: AuthService,
private activatedR: ActivatedRoute,
private router: Router,
private alertify: AlertifyService,
private userService: UserService
) {}
canActivate(): boolean {
if (this.auth.loggedIn()) {
console.log(this.activatedR.params["id"]);
console.log(this.activatedR.snapshot.paramMap.get("id"));
return true;
}
this.alertify.error("You shall not pass!!!");
this.router.navigate(["/home"]);
return false;
}
// this.userService.doesUserIdInUrlMatchUserIdInToken();
}
这两个控制台日志都返回
null
和
undefined
.