简体   繁体   English

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

[英]Return user to previous page after login (Rails)

On a rails 2.3.8 site I have login links on each page (that takes a user to a separate signin page).在 rails 2.3.8 站点上,我在每个页面上都有登录链接(将用户带到单独的登录页面)。 After a successful login the user is currently redirected to root.成功登录后,用户当前被重定向到 root。 Instead I'd like to redirect to the page they were previously viewing.相反,我想重定向到他们之前查看的页面。

I've tried using request.referer:我试过使用 request.referer:

redirect_back_or_default(request.referer)

Where redirect_back_or_default:其中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.但是,即使登录成功,也会产生“访问被拒绝”错误。

Instead of trying to redirect to the referrer, I would set the session[:return_to]我不会尝试重定向到引用者,而是设置 session[: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()

Before all you must store your url by cookies :首先,您必须通过cookies存储您的url

cookies[:return_to_url] = request.url

And then after success logging:然后成功登录后:

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 https://api.rubyonrails.org/classes/ActionDispatch/Cookies.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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