[英]After upgrading to Rails 3.2.2 and Devise 2.0.4, logout does not destroy session
[英]Devise session[:previous url] empty after logout
登录后,我已使用此方法重定向到当前页面,并使用Devise退出。 它几乎总是可以正常工作,但不可行。
注销后,我也已重定向到登录页面。 没有这种重定向,一切都会正常进行。
不起作用的情况是:当我注销并再次登录时 。 在登录页面中,我打印session [:previous url],它为空,登录后将重定向到根路径·
这种行为对我来说似乎很奇怪...有什么想法吗?
UPDATE
这是我提到的重定向。 这样,session [:previous url]在登录页面中为空
def after_sign_out_path_for(resource)
login_path
end
这是没有重定向的工作方式。 这样,session [:previous url]可以正常工作
def after_sign_out_path_for(resource)
session[:previous_url] || root_path
end
您需要重写Devise的after_sign_out_path_for
方法以实现此目的。 在您的应用程序控制器中添加此方法
def after_sign_out_path_for(resource_or_scope)
request.referrer
end
我知道这是一个非常老的问题,但是很多人(包括我)仍然有这个问题。
Devise会在注销过程中重置会话,因此正如RSB所写,您需要使用request.referrer
将用户重定向回他们来自的位置。
在您的特定情况下,您可能需要将方法更改为
def after_sign_out_path_for(resource_or_scope)
session[:previous_url] = request.referrer
redirect_to login_path
end
但是,期望应用程序记住用户注销并重新登录时的位置是……非常异乎寻常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.