【问题标题】:OmniAuth: redirect to page which requires authentication instead of the one which user came fromOmniAuth:重定向到需要身份验证的页面,而不是用户来自的页面
【发布时间】:2011-09-29 10:30:01
【问题描述】:

我的应用程序中有一些页面需要通过链接进行身份验证。如果他/她尚未通过身份验证,我会使用 before 过滤器将用户重定向到 /auth/linked_in。我希望在身份验证后用户应该被重定向到需要身份验证的页面,而不是用户来自的页面。

过滤器之前的样子:

def require_linked_in!
  unless current_user and current_user.linked_in_authenticated?
    redirect_to "/auth/#{Authentication::LINKED_IN}"
  end
end

在我的omniauth回调中,我做了一些事情,例如登录或将提供者数据与用户帐户相关联,如果一切正常,redirect_to request.env['omniauth.origin'] || root_url,但这会将用户重定向回他单击链接到需要linked_in的页面的页面身份验证而不是目标页面。

如何将用户重定向到触发身份验证的页面而不是用户来自的页面?

PS:用户只能使用应用程序的注册表单进行注册,但稍后可以连接链接和 facebook 个人资料,也可以使用它们而不是普通的电子邮件/密码登录表单。如果有什么不同的话。

【问题讨论】:

    标签: ruby-on-rails omniauth


    【解决方案1】:

    我猜你需要将 url 存储在会话中并在omniauth 回调之后重定向。

    def require_linked_in!
      session[:return_to] = request.url
      unless current_user and current_user.linked_in_authenticated?
        redirect_to "/auth/#{Authentication::LINKED_IN}"
      end
    end
    

    在你的回调动作中你可以使用:

    redirect_to session[:return_to] || root_url
    

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多