有没有一种方法可以在Devise中动态添加Omniauth提供者/策略

时间:2019-06-07 12:29:30

标签: ruby-on-rails ruby devise

我计划在Web应用程序中选择一个选项,以添加更多的Omniauth提供程序/策略,而无需重新部署或重新启动Web应用程序。

我添加了一个表,可以在其中保存新策略的所需值,然后在 config / initializers / devise.rb 中迭代这些值;

Devise.setup do |config|
  # AppConfigTable.oauth structure will be
  # "facebook"=>
  # [
  #  {
  #    id: 5,
  #    name: "key",
  #    value: "yyyyyyy",
  #   },
  #  {
  #   id: 6,
  #   name: "secret",
  #   value: "xxxxxxx"
  #  }
  # ]
  AppConfigTable.oauth&.each do |provider, oauth_values|
    data = oauth_values.map { |f| [f.name, f.value] }.to_h
    config.omniauth provider.to_sym,
                    data['key'],
                    data['secret']
  end
end

现在,每当我在表中添加新策略时,新添加的策略都不会应用于Web应用程序。我仍然需要重新启动服务器才能使其正常工作。

更新

  

我将上面的代码移到了每个操作都被调用的服务上。我仍然需要重新启动服务器。

0 个答案:

没有答案