rest - RESTful 表示是否应该依赖于用户权限?

标签 rest restful-authentication hateoas

当授权渗透到资源表示中时,我认为它不是 RESTful。当前用户的身份严格属于客户端状态,因此它不应影响资源的表示,除非标识因素或用户 ID 或权限详细信息随请求一起发送。

如果您使用 session ,这将是流程的有状态部分:例如,如果您想阅读某人的个人资料页面,您将有 2 个表示:users/123 users/123?editable=true。是否可以选择可编辑的取决于 session 的权限。可编辑链接应该出现在哪里?如果它只出现在 /users/123 表示中,如果你有权限,那么它违反了服务的无状态约束,因为资源的表示将取决于当前 session 。 :S 所以如果你想为每个用户提供不同的表示,那么你必须在每个请求中发送一些与此相关的内容。

有人对此有好的解决方案吗? 是否可以使用 session 并将有状态部分与服务分开?

是否可以通过创建响应将权限依赖部分与资源依赖部分完全分开? (在那种情况下,资源相关部分即使有 session 也可以很好地维护,并且缓存它会容易得多。)

最佳答案

Should a RESTful representation depend on user permissions?

是的。

I don't think it is RESTful when authorization infiltrates into the representations of resources. The identity of the current user is strictly client state, so it should not effect on the representation of a resource except if identification factors or user id or permission details is sent with the request.

它是客户端状态,但您可以将它与每条消息一起发送,因此它不违反无状态约束。

Is it possible to use sessions and separate the stateful part from the service?

不允许服务器端 session ,因为它们会违反无状态约束。

关于rest - RESTful 表示是否应该依赖于用户权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20313520/

相关文章:

spring - 如何在 Spring 服务器配置中禁用 'Authentification required popup'?

python - CryptoControl - Python Django 中的 Python 加密新闻 API 集成

Django REST Framework - 如何加密 PUT 和 PATCH 中的密码?

ruby-on-rails - 在Rails中使用restful_authentication插件跟踪匿名用户的最佳方法是什么?

spring - 不扩展ResourceSupport的Spring-HATEOAS

rest - 如何在分布式 REST 服务架构中生成 HATEOAS 链接?

rest - HATEOAS(REST 架构)的实际示例

angularjs - 再次调用Elasticsearch数据

rest - 按名称访问服务

javascript - Postman Get call 500 内部服务器错误