通过 Devise 成功登录后,如何将用户重定向回他们所在的页面?
我已经阅读和搜索了很多,我知道我需要定义 after_sign_in_path_for
.我已经这样做了并且它工作正常,我遇到的问题是理解上一页的存储方式以及如何正确调用它。
我的 session Controller 中有这个:
def after_sign_in_path_for(resource)
return request.env['omniauth.origin'] || session[:user_return_to] || root_path
end
我也试过
...
return request.env['omniauth.origin'] || stored_location_for(resource) || root_path
...
我认为我不了解如何存储位置,因为如果用户单击登录,则会被重定向回根路径。
可以通过两种方式启动登录。 (a) 用户尝试访问受限 View (即
before_filter :authenticate_user!...
,在这种情况下,他们被重定向并提示登录。或者(b)用户单击每个页面上都可用的登录链接,如果用户是未登录。(a) 似乎有效。 (b) 不是。我想我需要在用户单击登录链接时将当前位置存储到 session 中。
我该怎么做呢?或者,哪里有一个很好的信息来源可以帮助我理解这一点。
谢谢!
最佳答案
您可以使用 request.referrer
获取以前的网址正如在这个 SO 问题中所解释的:How to redirect to previous page in Ruby On Rails?
关于ruby-on-rails - Devise登录后如何返回上一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10631021/