繁体   English   中英

注销后设计会话[:上一个URL]为空

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM