使用omniauth和devise重定向回当前页面

时间:2014-10-24 07:41:45

标签: devise omniauth

我想在oauth登录后重定向回当前页面,然后我跟着this Devise wiki执行以下操作:

  def after_sign_in_path_for(resource)
    sign_in_url = new_user_session_url
    if request.referer == sign_in_url
      super
    else
      request.env['omniauth.origin'] || stored_location_for(resource) || request.referer || root_path
    end
  end

request.env['omniauth.origin']http://www.bubutravel.com/users/sign_in

stored_location_for(resource)

request.refererhttp://openapi.qzone.qq.com/oauth/[omitted](我的提供者)

因此,在我的omniauth登录后,我再次被重定向到提供者网址。

wiki过时了吗?什么是omniauth登录重定向到当前页面的推荐方法?

1 个答案:

答案 0 :(得分:4)

我意识到我不应该按照wiki的建议覆盖after_sign_in_path_for。我应该在每个请求中记录路径:

  before_action :store_current_location, :unless => :devise_controller?
  def store_current_location
    store_location_for(:user, request.url)
  end

内置after_sign_in_path_for将处理剩下的事情。