登录后将用户返回到上一页(Rails) [英] Return user to previous page after login (Rails)

查看:55
本文介绍了登录后将用户返回到上一页(Rails)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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.

我试过使用 request.referer:

I've tried using request.referer:

redirect_back_or_default(request.referer)

其中redirect_back_or_default:

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.

推荐答案

我不会尝试重定向到引用者,而是设置 session[:return_to]

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

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

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

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

然后将您的重定向更改为

Then change your redirect to just be

redirect_back_or_default()

这篇关于登录后将用户返回到上一页(Rails)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆