ruby-on-rails - Devise登录后如何返回上一页

标签 ruby-on-rails devise

通过 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/

相关文章:

ruby-on-rails - 模型/ActiveRecord 不保存新数据

ruby-on-rails - Ruby on rails + aws cognito 示例

ruby-on-rails - 设计:尝试创建没有 ID 的记录

ruby-on-rails - 使用 capybara、phantomjs 和 Rails 在子域上测试 javascript

mysql - Sql 查询获取 Rails 中最受欢迎的帖子

ruby-on-rails - ActiveRecord group by 乘法字段和计数

ruby-on-rails - 如何更新 Controller 方法的特定字段值?

ruby-on-rails - 对 API 调用进行排队以符合速率限制

ruby-on-rails - 设计 + OmniAuth Saml:ActionController::InvalidAuthenticityToken

ruby-on-rails - Rspec-设计-rails : User session