【发布时间】:2018-11-28 19:57:09
【问题描述】:
我根据那篇文章实现了身份验证策略:https://docs.nestjs.com/techniques/authentication。但我想将 JwtStrategy 扩展为检查角色。最简单的方法是在jwt.strategy.ts 中添加对 oles 的检查,因为已经有基于 JWT 有效负载的用户。
但我不知道如何将附加参数传递给validate 函数。
我想实现的:
async validate(payload: JwtPayload, done: Function, role: string) {
const user = await this.authService.validateUser(payload);
if (!user || user.role !== role) {
return done(new UnauthorizedException(), false);
}
done(null, user);
}
但我不知道如何将额外的 role 参数传递给该函数。我正在使用装饰器@UseGuards(AuthGuard('jwt')) 来启用保护。我想要实现的是在那里添加一个附加参数role 字符串并在 JWTStrategy 中使用它。
实现它的最简单方法是什么?还是我需要实现两个单独的守卫?
编辑:实际上我不知道 AuthGuard 会自动将用户附加到请求中。解决方案只是简单地从@hdias2310 指向的 url 实现 RoleGuard。 (https://docs.nestjs.com/guards)
【问题讨论】:
-
你需要两个单独的警卫。
标签: typescript passport.js nestjs