我使用NestJS作为客户端API的框架.在框架内,我们正在使用一个非常标准的Passport/JWT auth基础设施,该工作正常.我们的AuthGuard在找到承载令牌时触发,并且在安全的API端点中,我可以通过'@Res()request注入HTTP上下文并访问'request.user'属性,该属性包含我的Jwt令牌的有效负载.
最重要的是,我们尝试以与文档中提供的示例代码非常相似的方式实现"RolesGuard"以及GitHub上的一些示例项目(其中没有一个实际使用此防护,但它们将其作为示例防护包括在内).
我们的问题是我们的AuthGuard会触发并验证Jwt令牌,然后我们的RolesGuard会触发,但它传递的请求对象没有附加到请求的用户元数据.
我们的RolesGuard中的关键代码是:
const request = context.switchToHttp().getRequest();
const user = request.user;
if (!user) {
return false;
}
Run Code Online (Sandbox Code Playgroud)
在上面剪断的用户总是假的.有没有人在Nest中编写了一个基于角色/权限的保护,成功访问了当前用户的范围?所有代码都被触发,所有内容都显示正确.
-Kevin