我们有一个带有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摧毁对象的一般不安宁。
请告知我可以实施哪些更改来调查此问题并进行修复!