8

我想使用该Meteor.loginWithGoogle()工具对用户进行身份验证,但有没有办法将其限制为特定的(Google Apps)域?

我可以在使用返回的电子邮件对用户进行身份验证后进行检查,但是有没有办法在登录阶段使用一些用于 Google 登录的参数来执行此操作?

4

2 回答 2

9

我认为现在不可能。有一个拉请求来部分添加该功能:https ://github.com/meteor/meteor/pull/1332 该拉请求的问题似乎是它只修复了事物的客户端(即它只显示用户登录时来自所选域的帐户)。但它不添加任何服务器端检查。

我使用以下解决方法:在服务器文件夹中的 .js 文件中,我有以下代码:

Accounts.validateNewUser(function (user) {
    if(user.services.google.email.match(/example\.org$/)) {
        return true;
    }
    throw new Meteor.Error(403, "You must sign in using a example.org account");
});

这可以防止为不同于 example.org 的域创建帐户。

于 2013-08-27T07:28:43.583 回答
1

如果您只想允许您域中的某些用户,您还可以添加一个白名单集合,该集合定义来自您的 Google Apps 帐户的用户 ID。通过这种方式,您可以将访问权限限制为仅特定用户,获得单点登录功能,并且可以在用户创建帐户之前为您的应用预设用户角色和属性。

为此使用Accounts.onCreateUser(function(options, user){})回调,因为它允许您定义其他用户属性。

于 2015-05-13T02:16:11.003 回答