将Meteor.js内置Google身份验证限制为域

时间:2013-08-27 02:57:35

标签: meteor google-oauth

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

我可以在使用返回的电子邮件对用户进行身份验证后进行检查,但是在登录阶段是否可以使用某些参数进行Google登录?

2 个答案:

答案 0 :(得分:9)

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

我使用以下解决方法: 在服务器文件夹中的.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不同的域创建帐户。

答案 1 :(得分:1)

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

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