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

时间:2022-06-13 08:08:42

On a rails 2.3.8 site I have login links on each page (that takes a user to a separate signin page). After a successful login the user is currently redirected to root. Instead I'd like to redirect to the page they were previously viewing.

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

I've tried using request.referer:

我尝试过使用request.referer:

redirect_back_or_default(request.referer)

Where redirect_back_or_default:

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

But that generates an "access denied" error, even though the login is successful.

但即使登录成功,也会产生“拒绝访问”错误。

1 个解决方案

#1


13  

Instead of trying to redirect to the referrer, I would set the session[:return_to]

我不会尝试重定向到引荐来源,而是设置会话[:return_to]

You'll need a before filter that runs before your authentication on all your actions:

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

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

Then change your redirect to just be

然后将您的重定向更改为

redirect_back_or_default()

#1


13  

Instead of trying to redirect to the referrer, I would set the session[:return_to]

我不会尝试重定向到引荐来源,而是设置会话[:return_to]

You'll need a before filter that runs before your authentication on all your actions:

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

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

Then change your redirect to just be

然后将您的重定向更改为

redirect_back_or_default()