说我有一个宁静的资源,UserSession
> POST /user_sessions.json
{
"user_session": {
"user": {
"some_key": "some_value",
"some_other_key": "some_other_value"
}
}
}
我想根据提供的参数选择UserSessions#create
中的提供程序,而不是使用通常使用的/auth/:provider
OmniAuth。有可能这样做吗?
答案 0 :(得分: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