Meteor Accounts-ui 在用户访问之前等待电子邮件验证
Meteor Accounts-ui to wait for email verification before user access
本地计算机上的 Meteor 网络应用程序使用 Accounts-password
和 Accounts-ui
。
用户输入电子邮件和密码以创建新帐户。
需要进行配置,以便用户仅在通过电子邮件验证帐户创建后才能获得用户 ID(从而成为当前用户)。
该应用设置了 smtp 变量。它发送验证电子邮件正常。但未能阻止用户在验证前'login'。怎么才能让它在验证后只给出一个有效的userId呢?谢谢
//server
Accounts.onCreateUser(function(options, user) {
Accounts.config({
sendVerificationEmail: true
});
return user;
});
事情并没有那么简单。 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;
}
});
正如@Season 指出的那样,验证需要创建一个 userId,以便 link 将其发送到验证电子邮件。
您可以做的是阻止用户在未验证电子邮件的情况下登录。请参阅另一个问题的答案:
我定义了一个全局助手:
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}}
本地计算机上的 Meteor 网络应用程序使用 Accounts-password
和 Accounts-ui
。
用户输入电子邮件和密码以创建新帐户。
需要进行配置,以便用户仅在通过电子邮件验证帐户创建后才能获得用户 ID(从而成为当前用户)。
该应用设置了 smtp 变量。它发送验证电子邮件正常。但未能阻止用户在验证前'login'。怎么才能让它在验证后只给出一个有效的userId呢?谢谢
//server
Accounts.onCreateUser(function(options, user) {
Accounts.config({
sendVerificationEmail: true
});
return user;
});
事情并没有那么简单。 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;
}
});
正如@Season 指出的那样,验证需要创建一个 userId,以便 link 将其发送到验证电子邮件。
您可以做的是阻止用户在未验证电子邮件的情况下登录。请参阅另一个问题的答案:
我定义了一个全局助手:
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}}