ruby on rails -设置session[:previous url]在注销后为空



我已经使用这个操作指南在登录后重定向到当前页面,使用设计注销。它几乎总是工作,但有一种情况不工作。

我还在注销后重定向到登录页面。没有这个重定向,一切都可以正常工作。

不工作的情况是:当我注销并再次登录时。在登录页面,我打印会话[:previous url],它是空的,登录后,它重定向到根路径·

这种行为对我来说很奇怪…什么好主意吗?

这是我提到的重定向。这样,session[:previous url]在登录页面

为空。
def after_sign_out_path_for(resource)
    login_path
end

这就是在没有重定向的情况下的工作方式。这样,会话[:previous url]工作正常

def after_sign_out_path_for(resource)
    session[:previous_url] || root_path
end

您需要重写设计的方法after_sign_out_path_for来实现这一点。在应用程序控制器中添加以下方法

def after_sign_out_path_for(resource_or_scope)
  request.referrer
end

我知道这是一个很古老的问题,但很多人(包括我)仍然有这个问题。

设计在注销期间重置会话,因此正如RSB所写,您需要使用request.referrer将用户重定向到他们来自的地方。

在您的特定情况下,您可能希望将方法更改为以下

def after_sign_out_path_for(resource_or_scope)
  session[:previous_url] = request.referrer
  redirect_to login_path
end

然而,期望应用程序记住用户注销和重新登录时的位置是……非常奇异的。

相关内容

  • 没有找到相关文章

最新更新