RESTful API 设计-同路不同角色

RESTful API Design - same path diffrent roles

我目前正在开发 RESTful API,它必须授予两个不同角色的访问权限:管理员和用户。 (我正在使用 Azure AD 应用程序角色) 我的问题是我不明白如何设计控制器逻辑。 例如,我希望(管理员和用户)都访问端点 /books,但允许管理员查看所有书籍,而只允许用户查看他的书籍。 授予允许访问权限的最佳做法是什么?我想像这样把它分成两个点:

/books -> with annotation [Authorize(Roles="Admin")]
/user/{id}/books -> with annotation [Authorize(Roles="User")]

感谢您的帮助!

此致

我想this sample may be of some help. And if you need sample written by other languages, you can refer to this document找一个合适的

关于你的情况,我认为最重要的是找出执行正确查询的方法,并使查询结果return正确。

因此,如果您为每个用户设置特定的 url(我认为在请求中公开用户 ID 不是一个好主意 link),或者隐藏用户 role/id放入请求头中的token中,都需要写逻辑代码来判断哪个查询方法需要运行。例如,使用访问令牌点击域:port/books,然后您的过滤器捕获此请求并解码令牌以了解用户 ID 和用户角色,并且可能可以将它们保存在会话中,然后您的控制器可能会检查session 中存储的值,选择正确的查询获取书籍信息。