微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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

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

解决方法

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

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

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

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

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

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

原文地址:https://www.jb51.cc/html/233619.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐