1

说我有一个宁静的资源,UserSession

> POST /user_sessions.json
{
    "user_session": {
        "user": {
            "some_key": "some_value",
            "some_other_key": "some_other_value"
        }
    }
}

我想UserSessions#create根据提供的参数选择提供程序,而不是使用/auth/:provider通常使用的 OmniAuth。是否有可能做到这一点?

4

1 回答 1

1

我正在使用一种技术将一些omniauth 选项设置到用户会话中。

我想这也可能适用于您的解决方案。不过,您仍然可以使用/auth/:provider路线!

所以我基本上将所有登录网址链接到我的auth_path

# routes.rb
get '/auth/login/:provider',          to: 'sessions#auth',     as: :auth

一旦我提取数据并将其放入会话中,我会将用户重定向到正确的登录路径。在您的情况下,它需要从参数中提取数据,然后重定向:

# sessions_controller.rb
def auth
  session[:omniauth_keys] = Usergroup.omniauth_keys(params[:provider], request)
  redirect_to "/auth/#{params[:provider]}"
end
于 2013-10-23T09:04:09.030 回答