退出后重定向设计

aro*_*ick 22 ruby-on-rails devise

使用Devise将用户重定向到她退出后当前所在页面的最佳做法是什么?

色器件文档说,重写以下(在应用程序控制器):

def after_sign_out_path_for(resource_or_scope)
  # logic here
end
Run Code Online (Sandbox Code Playgroud)

这很容易.但是,我将上一页设置为会话变量,如下所示:

session[:return_to] = request.fullpath
Run Code Online (Sandbox Code Playgroud)

问题是,当您注销时,会话被销毁,并且顶级方法在会话被销毁后发生,这意味着您无法再访问它.我想把它放在一个类变量或类似的东西中,但想看看SO的想法.

Oli*_*ves 33

如果您始终使用单击注销链接的页面,则可以在请求中使用referrer.

def after_sign_out_path_for(resource_or_scope)
  request.referrer
end
Run Code Online (Sandbox Code Playgroud)

  • 但请注意,并非所有浏览器都在请求中发送引荐来源.添加拦截器也可以隐藏它.你应该总是有一个保存备份目标,让它只是'/'. (2认同)