我正在使用帐户密码和Meteor.loginWithPassword
来验证用户身份。除非验证电子邮件地址,否则我想阻止用户登录。
目前我使用Meteor.method
和回调来执行此操作。如果相关用户具有经过验证的电子邮件地址并且触发当前表单以显示验证错误,则回调将仅触发对Meteor.loginWithPassword()
的调用。如果不。但是,技术娴熟的用户仍然可以直接在控制台中触发Meteor.loginWithPassword()
。有没有最好的做法来防止这种情况?
答案 0 :(得分:2)
您可以使用 accountsServer.validateLoginAttempt(func)
阻止使用尚未验证的电子邮件地址的用户登录,例如:
if (Meteor.isServer) {
Accounts.validateLoginAttempt(function(attempt) {
var user = attempt.user;
if (!user.emails[0].verified) throw new Meteor.Error(403, 'E-Mail address not verified.');
return true;
});
}
如果您返回false
或抛出异常,登录将被中止。