基于表单的登录,同时也应用 REST 原则

Posted

技术标签:

【中文标题】基于表单的登录,同时也应用 REST 原则【英文标题】:Form based login while also applying REST principles 【发布时间】:2010-12-01 05:36:33 【问题描述】:

我是一名 Spring/JavaEE Web 程序员,并开始研究 REST 原则以用于未来的 Web 应用程序,但我不知道如何进行可用登录。对于 Web API,它是有意义的,但是面向最终用户的 Web 应用程序呢?我研究了 HTTP 基本/摘要身份验证,但这只会产生一个丑陋的对话框。有人有什么想法吗?

【问题讨论】:

【参考方案1】:

这实际上取决于您如何处理基于表单的登录。

它在 J2EE 规范中定义的方式,登录页面仅在用户尝试访问受保护的资源时显示给(尚未经过身份验证的)用户;它本身不能(或不应该)访问。在这种情况下,登录页面不必受 REST 原则的约束,因为它本身不是“资源”。换句话说,工作流程是:

    用户尝试获取 REST url,'/products/0332425' 他/她被重定向到“/login”,发布他的凭据,被重定向回(作为 GET)到原始页面(“/products/0332425”) 随后尝试访问“/login”会导致错误(403?)或重定向到“root”。

如果这对您不起作用,并且您需要在多个页面上提供您的登录表单,请将其视为页面的一部分并像对待任何其他 POST 一样将其提交。

【讨论】:

这不是真正的 RESTful。 RESTful 将是 HTTP 身份验证,您在每个请求中发送用户名和密码(或哈希)。

以上是关于基于表单的登录,同时也应用 REST 原则的主要内容,如果未能解决你的问题,请参考以下文章

登录/注册表单的 REST 资源

SPA 使用的经过身份验证的 Rest API:如何获取用于登录和注册表单的 CSRF 令牌?

基于CSS3 登录表单 个性化登录按钮

(chap8 确认访问用户身份的认证) 基于表单认证

如何从 HTML 表单调用现有的 REST api?

JS 框架能够基于(django)rest api 选项生成表单