我想使用Meteor.loginWithGoogle()
工具对用户进行身份验证,但有没有办法将其限制为特定的(Google Apps)域?
我可以在使用返回的电子邮件对用户进行身份验证后进行检查,但是在登录阶段是否可以使用某些参数进行Google登录?
答案 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){})
回调,因为它允许您定义其他用户属性。