我最终想要的是能够通过设计正常登录或选择使用SAML登录.所以我读到,如果我整合omniauth和saml,那么omniauth和devise,我可以实现这一点.
我的问题是,我有不同的国内流离失所者,我想从中选择.所以我没有一个:idp_sso_target_url,但很多.所以我的问题是如何动态更改target_url的值.目前omniauth-saml gem在config / initializers目录中定义了这个值.
谢谢,
解决方法
您可以在db中存储每个提供程序的设置,然后在请求时在设置阶段配置omniauth.例如:
SETUP_PROC = lambda do |env| request = Rack::Request.new(env) user = User.find_by_subdomain(request.subdomain) env['omniauth.strategy'].options[:consumer_key] = user.consumer_key env['omniauth.strategy'].options[:consumer_secret] = user.consumer_secret end use OmniAuth::Builder.new do provider :twitter,:setup => SETUP_PROC end
有关更多信息,请参见https://github.com/intridea/omniauth/wiki/Setup-Phase.