虽然我"想"我理解它,但我需要一些清晰度.使用PURE Restful身份验证,事情确实变得有点笨拙,使用表单对应用程序的UI有很大帮助(即,获得单独的登录页面,忘记密码链接,更容易注销?等等)
现在表格出现了,有些人说"不安宁" - 对他们来说"不安宁"是什么?难道没有相应的登录资源可以这么说吗?还是它会强迫我失踪的其他东西?
注意:如果有人与他们创建会话,那就完全不同了.我更热衷于知道"为什么"他们被称为宁静?谷歌搜索"基于表单的身份验证与静态身份验证"会引发不少命中.
可以使用这些"表单"来验证和传递令牌以便应用程序存储在cookie等中,我觉得这完全是宁静的(假设加密安全等等),...
通过表单发送凭据进行身份验证没有任何问题.问题是大多数基于表单的系统依赖于会话,因此要求您只登录"一次".
会话是服务器状态,因此违反了REST体系结构的无状态约束.
如果每次都必须发送凭据,则可以将它们包含在有效负载中(即使用表单),也可以使用HTTP Authorization标头.
如果将它们包含在有效负载中,则可以将它们包含在正文中,但仅限于POST或PUT,而不是GET或DELETE(因为它们没有正文).
如果将它们作为查询参数的一部分包含在URL中,则URL不再必须代表实际资源.其中一个原则是URL匹配资源.在查询参数混乱中添加带外信息(例如凭证),这些信息会限制一些.
因此,对于基于HTTP的REST系统,您最好使用现有的HTTP授权机制,而不是使用其他方法.您也可以使用特定于客户端的SSL证书,这也可以正常工作.
好问题.我认为RESTful纯粹主义者可能会说拥有与动作而不是资源相关联的URI 是使基于表单的身份验证不是RESTful的原因,这是您自己指出的.
老实说,我认为100%纯RESTful应用程序的概念在Web应用程序方面有点像乌托邦的理想.我认为,对于RESTful Web服务来说,这是可以实现的,因为调用应用程序可以使用请求标头传递凭据.
在一天结束时,我认为只要您的应用程序正常工作就可以了,您不应该担心它是否纯粹是RESTful.
这是我的0.02美元.
从这个答案:
要成为RESTful,每个HTTP请求应该自己携带足够的信息,以便其接收者处理它以与HTTP的无状态特性完全协调.
并不是基于表单的auth不是RESTful - 根本没有RESTful会话.RESTful方式是为每个请求发送凭据.然而,这可能很容易被窃听,但HTTPS/SSL/TLS会关闭这个漏洞.