表单 – 为什么基于表单的身份验证不被认为是RESTful的?

虽然我“认为”我明白了,我需要一些清晰度。使用PURE Restful身份验证,事情确实有点笨拙,使用表单可以帮助应用程序的UI(即获得单独的登录页面,忘记密码链接,更轻松的注销等)

现在形式来了,有些人说“不安宁” – 对他们来说是什么“不安宁”?是不是没有相应的登录资源呢?还是强迫我失踪的其他东西?

注意:如果他们与他们建立会话,这是一个不同的事情。我更喜欢知道“为什么”他们的品牌是宁静的?只是谷歌搜索“基于表单的身份验证vs安全的身份验证”引起了不少命中。

可以使用这些“表单”来认证和传递令牌,以便应用程序存储在cookies等中,我觉得这是完全平静的(假设加密安全性等)…

解决方法

发送您的凭据(可能是通过表单)进行身份验证没有任何问题。问题是大多数基于表单的系统依赖于会话,因此要求您只登录“一次”。

会话是服务器状态,因此违反了REST架构的无状态约束。

如果您必须每次发送凭据,您都可以将其包含在有效负载中(即使用表单),也可以使用HTTP授权头。

如果将它们包含在有效载荷中,则可以将它们包含在正文中,但只能用于POST或PUT,而不是GET或DELETE(因为它们没有主体)。

如果将它们作为查询参数的一部分包含在URL中,那么URL不再一定代表实际的资源。其他原则之一是URL与资源匹配。在查询参数混合之外添加带外信息(如凭据),限制一点。

因此,对于通过HTTP的REST系统,您最好使用现有的HTTP授权机制,而不是制定其他功能。您也可以使用客户端特定的SSL证书,也可以正常工作。

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些