是否有办法限制应用的可访问性,并将用户重定向到呈现模板的路径“请检查您的电子邮件并验证您的电子邮件。”
用户在创建帐户后会收到验证链接,当用户点击它时,电子邮件会被设置为true
- 很棒。
在帐户创建和验证电子邮件之间,我想限制对应用程序的访问。我不希望用户在我的应用上创建个人资料并在线发布,因为他们可能是“恶意”用户。
解决方案一?:创建帐户后,我是否可以立即将用户注销,并将其引导至包含模板消息的路径“请检查您的电子邮件并验证您的电子邮件。”
然后,在Accounts.onLogin
上,检查是否验证了用户电子邮件。
server.js
if ( user.user.emails.verified === false ) {
//render please verify email template
}
else {
//continue as usual
}
Accounts.config({
sendVerificationEmail: true,
forbidClientAccountCreation: false,
loginExpirationInDays: null
});
我缺少一种更简单,更合乎逻辑的方法吗?
答案 0 :(得分:2)
如果您使用的是铁路由器,则可以添加前挂钩:
Router.onBeforeAction(function(){
if (Meteor.loggingIn()){
this.render('loading');
} else if (Meteor.user() && !Meteor.user().emails[0].verified){
this.render('verification');
} else {
this.next();
}
});
答案 1 :(得分:1)
如果您使用的是铁路由器,则可以向路由添加逻辑,以便在您登录时根据您是否已确认重定向。这也将解决用户注册后“立即注销”的问题。这听起来不像是最好的用户体验。使用一点逻辑进行路由可以解决这个问题。
答案 2 :(得分:1)
你可能已经解决了这个问题,但我认为分享一些提供更好解决方法的链接是值得的。他们与路由器无关,并利用Accounts包中已有的方法。
[#1]通过检查用户的电子邮件验证状态来阻止服务器发布的数据,以确保没有数据泄露:https://stackoverflow.com/a/15384012/3112047
[#2]如果布尔参数设置为 false ,则使用Accounts.validateLoginAttempt阻止登录尝试:https://stackoverflow.com/a/24940581/3112047