当授权渗透到资源表示中时,我认为它不是RESTful。当前用户的身份是严格的客户端状态,因此它不应影响资源的表示,除非与请求一起发送了识别因素或用户ID或权限详细信息。
如果你正在使用会话,这将是该过程的有状态部分:例如,如果你想阅读某人的个人资料页面,你将有2个表示:users/123
和users/123?editable=true
。这取决于会话的权限是否可以选择可编辑的权限。应该在哪里显示可编辑的链接?如果只有在具有权限的情况下它出现在/users/123
表示中,则它违反了服务的无状态约束,因为资源的表示将取决于当前会话的权限。 :S因此,如果您希望为每个用户提供不同的表示,那么您必须在每次请求时发送有关此内容的信息。
有人有一个很好的解决方案吗? 是否可以使用会话并将有状态部分与服务分开?
是否可以通过创建响应将权限相关部分与资源相关部分完全分开? (在这种情况下,即使使用会话,资源相关部分也可以很好地维护,并且缓存它会容易得多。)
答案 0 :(得分:0)
RESTful表示是否应该依赖于用户权限?
是
当授权渗入网络时,我认为它不是RESTful 资源的表示。当前用户的身份是 严格的客户状态,所以它不应该影响表示 除了识别因素或用户ID或之外的资源 权限详细信息随请求一起发送。
它是客户端状态,但您可以随每条消息发送它,因此它不会违反无状态约束。
是否可以使用会话并将有状态部分与 服务?
不允许服务器端会话,因为它们会违反无状态约束。