我有一个使用omniauth-github
gem的Rails应用程序。根据Github documentation,我可以在初始请求中将参数allow_signup
设置为false,这样用户只有在已经拥有Github帐户的情况下才能登录我的应用程序。这是我想要的行为。
我无法弄清楚的部分是:我应该在哪里设置这个参数?我已将其添加到登录链接路径("auth/github?allow_signup=false"
),但这不起作用。这应该在provider :github
内的config/initializers/omniauth.rb
线吗?怎么样?
您应该将参数显式传递给provider
函数。所以请尝试以下代码段。
provider :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET'], allow_signup: 'true', scope: 'user,repo,gist'
这就是我开始工作的方式:
# config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :github,
ENV['GITHUB_KEY'],
ENV['GITHUB_SECRET'],
{
client_options: {
authorize_url: 'https://github.com/login/oauth/authorize?allow_signup=false'
}
}
end
显然它也适用于Devise,用provider
取代config.omniauth
并将其放在config/initializers/devise.rb
中。