forms - 为什么基于表单的身份验证不被视为 RESTful?

标签 forms http rest restful-authentication

虽然我“认为”我理解它,但我需要澄清一下。使用 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/

相关文章:

javascript - jQuery ajax 表单不起作用

javascript - jquery 和 javascript 不适用于漂亮照片加载的 html 表单

java - JSP 验证用户来自上一页

javascript - 如何将自定义 header 添加到 HTTP 请求 (Jquery)?

rest - Angular 2 http post 返回 200 但没有返回响应

php - 防止 PHP 在 POST 之前运行

php - MYSQL 语法错误 - Codeigniter 函数计算成本

wordpress - 当用户离开页面时,如何强制将 URL 从 https 更改为 http

java - 将 Java 应用程序连接到 Microsoft CRM 2013 或 2016 的方法

wordpress rest api 仅通过 url 获取发布数据