Ruby on Rails身份验证,在登录前记住上一页

时间:2012-03-19 19:35:29

标签: ruby-on-rails ruby authentication devise

我正在寻找一种允许用户使用的解决方案:

  1. 导航到页面
  2. 注册或登录
  3. 被重定向到第一页
  4. 我一直在为我的应用程序使用Devise似乎已经碰壁,因为设备总是在登录后路由到root_path。我试过了:

    def after_sign_in_path_for(resource)
      session[:return_to] || root_path
    end
    

    但这不起作用,因为会话[:return_to]似乎没有设置。

    任何人都可以通过Devise了解最佳方法 - 或者建议一种允许此类操作的替代身份验证解决方案。感谢

4 个答案:

答案 0 :(得分:3)

您是否手动设置会话[:return_to]变量?尝试将此添加到ApplicationController

before_filter :get_referrer, :except => [:create, :update, :destroy]

def get_referrer
  session[:return_to] = request.referrer
end

或者,如果您希望对哪些页面实际设置return_to会话变量进行更精细的控制,则可以在每个控制器中设置return_to会话变量。

答案 1 :(得分:0)

您应该尝试覆盖application_controller.rb中的after_sign_in_path_for(resource),如下所示:

private

  def after_sign_in_path_for(resource)
    stored_location_for(resource) || default
  end

答案 2 :(得分:0)

Google快速搜索引导我this link。似乎最近,它至少应该指明你的方向,如果不解决你的问题。

答案 3 :(得分:0)

登录后您可以这样做:

redirect_to request.referer.blank? ? root_path : :back

无需在会话中存储引用。