虽然我“认为”我理解它,但我需要澄清一下。使用 PURE Restful 身份验证,事情确实变得有点笨拙,使用表单对应用程序的 UI 有很大帮助(即,获得单独的登录页面、忘记密码链接、更容易注销?等)
现在形式出现了,一些人说“不 Restful ”——他们“不 Restful ”是什么意思?难道说没有相应的登录资源?还是它会强制执行我缺少的其他内容?
注意:如果有人与他们创建 session ,那就完全是另一回事了。我更想知道“为什么”他们被贴上了 Restful 标签?只需在谷歌上搜索“基于表单的身份验证与静态身份验证”就会出现相当多的结果。
人们可以使用这些“表单”来验证和传递应用程序的 token 以存储在 cookie 等中,我觉得这完全是安静的(假设密码安全等,)...
最佳答案
发送您的凭据(可能通过表单)进行身份验证并没有错。问题是大多数基于表单的系统都依赖于 session ,因此要求您只登录“一次”。
session 是服务器状态,因此违反了 REST 架构的无状态约束。
如果您每次都必须发送凭据,您可以将它们包含在有效负载中(即使用表单),或者您可以使用 HTTP 授权 header 。
如果将它们包含在有效负载中,则可以将它们包含在正文中,但仅限于 POST 或 PUT,而不是 GET 或 DELETE(因为它们没有正文)。
如果您将它们作为查询参数的一部分包含在 URL 中,则 URL 不再一定代表实际资源。其他原则之一是 URL 与资源相匹配。在查询参数中添加带外信息(例如凭据)会使约束有点困惑。
因此,对于基于 HTTP 的 REST 系统,您最好使用现有的 HTTP 授权机制,而不是制定其他机制。您也可以使用客户端特定的 SSL 证书,这也能正常工作。
关于forms - 为什么基于表单的身份验证不被视为 RESTful?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7099087/