我想在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.referer
是http://openapi.qzone.qq.com/oauth/[omitted](我的提供者)
因此,在我的omniauth登录后,我再次被重定向到提供者网址。
wiki过时了吗?什么是omniauth登录重定向到当前页面的推荐方法?
答案 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
将处理剩下的事情。