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