Meteor 提供了一组loginWithExternalService()
方法(例如loginWithTwitter()
),允许用户创建帐户或通过这些第三方身份验证提供商重新登录。
但有没有办法区分这两种行为呢?即让人们sign in与 Twitter 合作,但不一定让他们sign up通过相同的操作?
实际用例是针对注册受到限制并且您有用于签名的私有 URL 的网站up,而是一个用于签名的公共页面in。我正在寻找一种方法来阻止人们仅通过首次登录即可创建帐户。
你可能可以加入Accounts.onCreateUser
(服务器端)
像这样的事情可能会有所帮助:
服务器端js
Accounts.onCreateUser(function(options, user) {
//Check if this user can be created, if not throw an error
var canCreate = false
if(!canCreate)
throw new Meteor.Error(403, 'You cant sign up', "Sorry you can only sign in but not sign up");
//Create the user like normal if we can.
if (options.profile)
user.profile = options.profile;
return user;
});
引发错误会阻止该方法返回并创建帐户。它仅在有人创建帐户但尚未拥有帐户时运行(外部服务提供商也是如此)
在客户端您可以处理错误,但在accounts-ui
软件包时您会收到“内部服务器错误”消息。您可能可以将其自定义为“您需要成为管理员”或其他内容
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)