微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Rails 3-通过OmniAuth进行设计-登录后重定向到/ users / sign_in

如何解决Rails 3-通过OmniAuth进行设计-登录后重定向到/ users / sign_in

| 我使用omniauth与devise一起使用Facebook登录用户。我希望他们在登录后可以重定向登录后的页面。 我用过
  def after_sign_in_path_for(resource_or_scope)
    store_location = session[:return_to]
    clear_stored_location
    (store_location.nil?) ? \"/\" : store_location.to_s
  end
在我的应用程序控制器中,并使用此代码进行了一个session_helper
  def deny_access
    store_location
    redirect_to new_user_session_path
  end

  def anyone_signed_in?
    !current_user.nil?
  end

  private

    def store_location
      session[:return_to] = request.fullpath
    end

    def clear_stored_location
      session[:return_to] = nil
    end
解决重定向到\“ services / \”的问题,在这里我有使用facebook和其他平台进行身份验证的逻辑,
skip_before_filter :store_location
在服务和其他控制器中,我不会将其存储为位置。 Q1我现在遇到的问题是,当我使用ajax并在模式窗口中呈现登录表单时,当用户成功登录时,它将重定向到/ users / sign_in /。我没有用户控制器,试图创建一个sessions_controller.rb,并在此处添加了skip_before ...,但它不起作用。 这是我登录的路线
new_user_session       GET   /users/sign_in(.:format)    {:action=>\"new\",:controller=>\"devise/sessions\"}
    user_session      POST   /users/sign_in(.:format)    {:action=>\"create\",:controller=>\"devise/sessions\"}
destroy_user_session   GET   /users/sign_out(.:format)   {:action=>\"destroy\",:controller=>\"devise/sessions\"}
问题2,我尝试在用户退出时使用重定向
  def after_sign_out_path_for(resource_or_scope)
      (session[:return_to].nil?) ? \"/\" : session[:return_to].to_s
  end
但这只会将我重定向到根页面。 我真的很感谢任何帮助,     

解决方法

        我在这里回答了 使用像Facebook这样的omniauth提供程序时,Devise无法正确重定向到存储的位置 在application_controller.rb中
 def after_sign_in_path_for(resource_or_scope)
   if request.env[\'omniauth.origin\']
      request.env[\'omniauth.origin\']
    end
end
    ,        您是否考虑过由Devise提供的助手
sign_in_and_redirect(resource_or_scope,*args)
(详细信息可以在此处找到)?您还可以获得
sign_out_and_redirect(resource_or_scope)
。 Q2。请尝试检查
session[:return_to]
-最有可能是
nil
。     ,        您可以传递如下参数:
/auth/facebook?referrer=/path/to/redirect
经过Facebook身份验证后,ѭ11中将提供此参数。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。