验证/授权用户有权访问资源的标准方法是什么?
例如:用户可以 PUT
comment/:id
来更新评论,我想检查用户是否被允许。
守卫并不理想,因为它们在任何验证之前运行,并且我需要访问评论 ID。
我还尝试了自定义参数管道,但我很难从中访问请求执行上下文以获取用户。
最后我也可以将逻辑放入控制器中。
这似乎是一个非常常见的用例,所以我想知道:这通常是如何解决的?
Node CASL 是一个很好的库。
这里有一个关于如何在 NestJS 中实现它的很棒的教程:
https://www.youtube.com/watch?v=qMU9c-0UHwM
使用它,您应该能够实现您想要的行为以及更复杂的场景。
常见的做法是使用
OAuth 2
框架。每个有效用户都将具有关联的访问令牌,该令牌将在允许用户访问资源之前在服务器中进行验证。
对于NestJs Framework,您可以查看官方文档以了解如何实现这一点。 https://docs.nestjs.com/security/authorization