我一直在寻找我们如何处理REST中的身份验证,并且我发现很难理解人们为什么不将身份验证视为资源。当使用名词而不是名词化动词时,应考虑对
进行身份验证POST / secure-sessions
我们将被重定向到:
GET / secure-sessions / {id}
所有其他安全资源将是:
GET / secure-sessions / {id} / other-resources POST / secure-sessions / {id} / other-resources 等
如果我们退出,我们会这样做:
DELETE / secure-sessions / {id}
为什么从未考虑过这个问题? 人们仍然可以使用授权标头和其他令牌机制。
干杯
Tjerk
答案 0 :(得分:1)
在阅读REST约束之前,我在几年前就有了同样的想法。答案很简单,它违反了REST的stateless constraint。
我们接下来为客户端 - 服务器交互添加一个约束: 沟通必须是无国籍的,就像在 第3.4.3节(图5-3)的客户端无状态服务器(CSS)样式, 这样从客户端到服务器的每个请求都必须包含所有 理解请求所必需的信息,不能采取 服务器上任何存储上下文的优点。 会话状态是 因此完全保留在客户端上。
答案 1 :(得分:0)
这是一个坏主意,因为REST资源应该具有稳定的URI。您的解决方案为同一资源创建了许多不同的URI(取决于请求资源的人)。
身份验证是与资源本身正交的资源请求的一个方面。有很多方法可以保护REST资源(请参阅OAuth 2.0)