通过API设计sign_out而不执行任何操作

时间:2016-02-17 12:51:49

标签: ruby-on-rails ruby api rest devise

我们有一个带有Devise 3.5.5的Rails 4.2.3允许Facebook认证。 我们的后端由iOS应用程序访问,并具有Rails Web前端。

登录和退出都在网络上正常运行,在iOS应用中登录工作也绝对正常;但是尝试http://BASE_URL/users/sign_out/上的DELETE请求不会改变用户状态 - 会话不会被破坏,用户也会被授权。

1)通过以下模板进行的网络注销正常工作:

<%= link_to('Sign out', destroy_user_session_path, :method => :delete) %>

2)当我在/ users / sign_out /上请求删除(使用Paw或cURL)时,我得到HTTP 204(我得到删除查询的正确答案)。

3)正在访问设计注销方法:我在app / controllers / users / sessions_controller.rb destroy方法中设置了一个记录器triger,并且每次发出请求时都会给出一个日志条目。 / p>

4)当我将config.sign_out_via方法更改为:get时,一切都按预期开始工作:会话在GET / users / sign_out / request之后终止。

5)只是为了涵盖类似StackOverflow问题的所有其他解决方案,我已经检查过#= require jquery_ujs已经到位。

我正在考虑在:get上保留deauth方法,但据我所知,它有两个主要缺陷:CSRF不安全和使用GET摧毁对象的一般不安宁。

请告知我可以实施哪些更改来调查此问题并进行修复!

0 个答案:

没有答案