限制使用Google OAuth2.0登录Ruby上的特定白名单域名

编辑:我改变了我想要这样做的方式我认为我将使用MySQL表将设计登录列入白名单。 更改后的问题发布在此处: 使用Ruby限制使用Google OAuth2.0登录并设置为特定白名单表

好吧所以我试图在使用Devise和Omni-Auth2并且只有google的rails网站上获取我的ruby的受限身份validation。 到目前为止一切正常,但我只希望接受来自某个域的电子邮件。 无论如何我都愿意这样做。

我做了一些谷歌搜索,但似乎一些PHP用户比我更多的本地文件,可能是因为在本地使用谷歌API客户端? 我并不完全确定,因为我对编码一般都很陌生并且惊讶于我做到了这一点。

以下是一个示例: 使用Python的Google Oauth2.0:如何限制对特定域的访问?

在这里: 使用Google OAuth2.0将登录电子邮件限制为特定域名

两者似乎都使用“高清:域名”或类似的东西,但似乎有问题加上我不确定我会如何在我的应用程序中暗示它。

现在获取更多信息,我只使用gem devise和omniauth-google-oauth2( https://github.com/zquestz/omniauth-google-oauth2 )我觉得这是一种方法来处理这个gem,但仍然不完全确定。 如果我可以发布任何更多信息让我知道,任何帮助将不胜感激。

我的omniauth_callbacks_controller:

class User::OmniauthCallbacksController  "Google" sign_in_and_redirect @user, :event => :authentication else session["devise.google_data"] = request.env["omniauth.auth"] redirect_to new_user_registration_url end end end 

我知道这个问题很老,但回答它只是为了参考。 您需要更改config / initializer / omniauth.rb并将“hd”添加到提供程序。

 Rails.application.config.middleware.use OmniAuth::Builder do provider :google_oauth2, ENV["google_client_id"], ENV["google_client_secret"], { hd: 'domain.com' } end 

为什么不向模型添加validation来限制域?

 validates :email, presence: true, uniqueness: true, format: { message: 'domain must be example.com', with: /\A[\w+-.]+@example.com\z/i } 

其他用户在这里回答:

使用Ruby限制使用Google OAuth2.0登录并设置为特定白名单表