我在我的Rails应用程序中使用Devise gem进行用户身份验证。我发现sign_out
辅助方法在Safari中无法使用,包括桌面和移动设备 - 它在Chrome等中运行良好。
我正在尝试强制已登录的用户在他们点击特定控制器操作时退出:
def new
if user_signed_in?
sign_out
end
end
但这没有效果。 user_signed_in?
和destroy_user_session_path
功能在视图中正常工作,如
<% if user_signed_in? %>
<%= link_to('Logout', destroy_user_session_path, :method => :delete) %>
<% end %>
但是从控制器调用sign_out
是不行的。
有没有人遇到过Devise的这类跨浏览器问题,有没有办法可以解决这个问题或以其他方式实现相同的功能?
答案 0 :(得分:0)
进入config / application.rb并按}
serve_static_assets
true
或者
添加到routes.rb
config.serve_static_assets = true
然后,您的退出链接应该是这样的
match '/logout' => 'devise/sessions#destroy', :via => [:delete]
如果它不起作用,请尝试覆盖Devise :: SessionsController,如下所示:
<%= link_to 'Sign Out', logout_path %>