登录和注销操作应在“RESTful”设置中使用哪种 HTTP 方法

Posted

技术标签:

【中文标题】登录和注销操作应在“RESTful”设置中使用哪种 HTTP 方法【英文标题】:Which HTTP method should Login and Logout Actions use in a "RESTful" setup 【发布时间】:2013-02-12 10:50:07 【问题描述】:

很好奇这里的其他人如何在 REST 架构中表示这些。

/users/login/
/users/logout/

这些端点分别设置会话以登录用户或清除它。我的直觉是 POST,但实际上我并没有创建对象。

【问题讨论】:

另见:***.com/q/2001773/165674 关于注销,在***.com/q/3521290/873282详细讨论(结果相同) Logout: GET or POST?的可能重复 POST 不必创建新资源。它只是将数据发送到服务器。服务器如何处理这些数据取决于服务器。 【参考方案1】:

也许连接? MDN 说:

HTTP CONNECT 方法启动与所请求资源的双向通信。它可以用来打开隧道。

由于登录意味着在浏览器和服务器之间保持会话,因此 CONNECT 方法最有意义。

【讨论】:

【参考方案2】:

您应该使用POST - 使用GET 进行这些操作可能会导致浏览器预取和搜索引擎爬取问题。见(1,2)

【讨论】:

简明扼要,没必要研究。谢谢 是的,POST 听起来是注销请求最合理的选择,也是我默认考虑的选项,但是,POST 不意味着“创建”吗?对于POST 的注销请求,您将发送什么表单数据? DELETE 请求也几乎不适合,除非你有类似 DELETE /session/id 的东西。 PUT 意味着我们正在替换某些东西,所以这是不可能的。你对PATCH有什么看法?

以上是关于登录和注销操作应在“RESTful”设置中使用哪种 HTTP 方法的主要内容,如果未能解决你的问题,请参考以下文章

在 RESTFUL 身份验证中添加注销按钮

使用 http 基本身份验证和 restful_authentication 插件注销

[简易的网站登录注册,注销退出操作]

使用 Facebook 帐户登录和注销

注销按钮操作不起作用

拦截登录/注销 ejabberd