【发布时间】:2021-07-26 02:43:52
【问题描述】:
我正在尝试为我的网络应用程序创建一个后端。该应用程序应该有能够创建关于不同事物的帖子并在需要时编辑它们的用户,以及可以编辑甚至可以编辑的管理员删除不同用户的帖子,如果他们认为这些帖子不好。我在管理用户权限和授权时遇到了问题,尤其是在允许用户访问哪些资源方面,但我已经找到了两种可能的解决方案,但我不确定哪一个是最好的。
- 使用允许修改自己的数据并将 /users/{id} 资源仅用于使用的特定路径(例如 /users/me) 管理员。
- 根据给定的 id 是否与身份验证中的用户匹配来处理授权(/users/{id} 只允许您DELETE 或PUT 如果您与基于身份验证令牌的 URI 中的用户是同一用户)。
我想从数据库交互层中抽象出身份验证和授权层,但我发现使用第二种方法很难做到,因为在用户访问资源之前检查用户是否“拥有”资源需要您检索该资源资源,但我也认为第二种方法也有一些优点。
在代码扩展和质量方面,哪一个是最佳架构选择,您会为项目选择哪一个(甚至可能是两者的混合)?
我提到我的后端使用 node.js 和 express 通过 Mongoose 与 MongoDB 数据库交互.
【问题讨论】:
标签: node.js rest express design-patterns architecture