我发现了很多关于权限/基于角色的授权的帖子.然而,我正在寻找一种优雅的方式或任何bast实践来返回属于特定用户的数据/资源?

例如:我希望http://localhost:3000/transactions不会返回所有事务,仅返回属于发起请求的经过身份验证的用户的事务.

我的简单/手动解决方案?每个事务项都有user_id个字段,因此我可以编写中间件来解码jwt令牌,并从令牌中获取user_id,并将其公开给request对象(即request.user_id = user_id from the token).对于每个路由(如事务),我可以取request.user_id并将其添加到查询中.

我想知道,在express/node中处理这个问题的最佳解决方案是什么.js应用程序?图书馆服务软件即服务

推荐答案

你的方法听起来很正确.UserID是用于授权的值,以数字验证的方式接收,称为claim.一种好方法是设计一个claimsclaimsPrincipal对象,其中包含这样的细节,供API的业务授权使用.

在 node 中.js有时在验证令牌并将其保存到response.locals.claims(如this code of mine)时,会在中间件中进行处理.然后,如您所述,业务逻辑可以使用这些值.

Node.js相关问答推荐

MongoServelSelection错误:服务器 Select 在30000 ms后超时

一个大型的单个 Redis 实例可以处理所有事情,还是多个 Redis 实例?

动态设置元数据,无需重复请求 NextJS 13

如何使用Stripe测试失败的收费?

2023年如何在Node.js中使用Gmail发送邮箱?

为什么 nginx 不将我的 react index.html 作为后备服务

每秒从套接字传来的数据有哪些存储方式?

如何在没有 Typescript 的情况下以交互方式使用 Create-React-App?

在 nodejs 中使用 multer 上传文件返回未定义的 req.file 和空的 req.body

图像存储在后端文件夹中,但使用 multer 和 react.js 在前端找不到

在数组的另一个对象中获取数组的mongoose 对象

Mongoose,如何一次更新多个?

Node.js 大文件上传到 MongoDB 阻塞了事件循环和工作池

使用 $in 查询时,如何获取 mongoDB 中每个唯一 ID 的 n 个文档?

使用加密模块的流功能获取文件的哈希(即:没有 hash.update 和 hash.digest)

在 PassportJS 中使用多种本地策略

如何在 Node.js 中等待子进程完成

如何brew安装特定版本的Node?

`return function *(){...}` 是什么意思?

Mongoose:模式与模型?