登录后将用户返回到上一页(Rails)



在rails 2.3.8网站上,我在每个页面上都有登录链接(将用户带到一个单独的登录页面)。成功登录后,用户当前被重定向到root。相反,我想重定向到他们以前查看的页面。

我尝试过使用request.referer:

redirect_back_or_default(request.referer)

其中,redirect_back_or_default:

def redirect_back_or_default(default)
    redirect_to(session[:return_to] || default)
    session[:return_to] = nil
end

但是,即使登录成功,也会生成一个"拒绝访问"错误。

我不想重定向到引用者,而是设置会话[:return_to]

你需要一个在你对所有操作进行身份验证之前运行的前过滤器:

def store_return_to
  session[:return_to] = request.url
end

然后将您的重定向更改为

redirect_back_or_default()

首先,您必须通过cookies:存储您的url

cookies[:return_to_url] = request.url

然后在成功登录后:

redirect_to cookies[:return_to_url] || root_path
cookies[:return_to_url] = nil
# or even better code in one line:
redirect_to cookies[:return_to_url].delete || root_path

https://api.rubyonrails.org/classes/ActionDispatch/Cookies.html

最新更新