我根据该文章https://docs.nestjs.com/techniques/authentication实施了身份验证策略。但我想在检查角色时扩展该JwtStrategy。仅在jwt.strategy.ts
中添加对油烟的检查将是最简单的,因为已经有用户基于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)
答案 0 :(得分:5)
您将需要其他警卫来进行角色验证。
您可以在“基于角色的身份验证”部分中获得NestJS文档(https://docs.nestjs.com/guards)中的实现示例。
答案 1 :(得分:0)
要添加到已接受的答案中,我想指出auth0.com,其中有很好的章节介绍了基于角色的身份验证。