我想使用该Meteor.loginWithGoogle()
工具对用户进行身份验证,但有没有办法将其限制为特定的(Google Apps)域?
我可以在使用返回的电子邮件对用户进行身份验证后进行检查,但是有没有办法在登录阶段使用一些用于 Google 登录的参数来执行此操作?
我想使用该Meteor.loginWithGoogle()
工具对用户进行身份验证,但有没有办法将其限制为特定的(Google Apps)域?
我可以在使用返回的电子邮件对用户进行身份验证后进行检查,但是有没有办法在登录阶段使用一些用于 Google 登录的参数来执行此操作?
我认为现在不可能。有一个拉请求来部分添加该功能: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 的域创建帐户。
如果您只想允许您域中的某些用户,您还可以添加一个白名单集合,该集合定义来自您的 Google Apps 帐户的用户 ID。通过这种方式,您可以将访问权限限制为仅特定用户,获得单点登录功能,并且可以在用户创建帐户之前为您的应用预设用户角色和属性。
为此使用Accounts.onCreateUser(function(options, user){})
回调,因为它允许您定义其他用户属性。