本地计算机上的Meteor网络应用使用Accounts-password
和Accounts-ui
用户输入电子邮件和密码以创建新帐户。
需要对其进行配置,以便用户在验证通过电子邮件创建帐户后才能获取userId(从而成为currentUser)。
该应用已设置smtp变量。它发送验证邮件很好。但它未能阻止用户在验证前“登录”。如何才能使它在验证后只提供有效的userId?感谢
//server
Accounts.onCreateUser(function(options, user) {
Accounts.config({
sendVerificationEmail: true
});
return user;
});
答案 0 :(得分:1)
它不是那么简单。 Meteor需要用户拥有ID才能向他们发送电子邮件。您想要做的可能实际上并不是阻止登录,而是阻止为了做您想做的事情,您必须阻止他们在 登录时看到任何内容。在您的顶级模板中这样:
{{#if userVerified}}
// Body of your app here
{{> Template.dynamic template=main}}
{{else}}
You are not yet verified
{{/if}}
这在相应的.js
文件中:
Template.body.helpers({
userVerified () {
const user = Meteor.user();
return user.emails[0].verified;
}
});
答案 1 :(得分:1)
正如@Season指出的那样,验证要求创建userId以将其链接到验证邮件。
如果用户无法验证其电子邮件,您可以阻止用户登录。请参阅另一个问题的答案:
答案 2 :(得分:1)
我定义了一个全局帮助器:
Template.registerHelper('isVerified',function(){ // return a true or false depending on whether the referenced user's email has been verified
if ( Meteor.user() && Meteor.user().emails ) return Meteor.user().emails[0].verified; // look at the current user
else return false;
});
然后在任何模板(通常是我的主模板)中,我可以这样做:
{{#if isVerified}}
content that only verified users should see
{{else}}
Please check your email for your verification link!
{{/if}}