在 Meteor accounts-password 中重置密码后禁用登录
Disable login after resetting password in Meteor accounts-password
如何在Meteor accounts-password包中重设密码后禁止登录?
将重置 link 发送到客人的电子邮件后,我有这个代码来重置密码,
Accounts.resetPassword(this.props.params.token, this.refs.password.value.trim(),(err) => {
if(err){
Bert.alert( err, 'danger', 'growl-top-right');
} else {
Bert.alert( "Password is successfully changed.", 'success', 'growl-top-right');
}
this.setState({resetPassword:false});
this.refs.password.value = "";
});
几秒钟后,它会自动将用户登录到仪表板页面。这里的问题是,我有不同类型的用户,来宾(无法登录),管理员(有权管理用户)和员工(应用程序的已验证用户)。
如果客人重置密码,他们会自动登录,这是错误的。
如何禁用自动登录?
顺便说一下,我正在使用 Meteor + React JS 和 React-router。
这是我的验证登录尝试代码,
Accounts.validateLoginAttempt((data)=>{
if(data.error)
return data.error;
if(!data.user.emails[0].verified)
throw new Meteor.Error(403, 'Verify email account first');
if((data.user.profile && data.user.profile.retired) || (data.user.roles.company.includes("guest")))
throw new Meteor.Error(403, 'Account must be accepted by an admin');
else
return true;
});
您可以使用AccountsServer#validateLoginAttempt(func)
方法来测试传递给回调的对象的user
是否是guest,如果是,return一个假值。
这是在服务器端完成的。
此 answer 提供了一个基于用户是否拥有经过验证的电子邮件的实施示例。
如何在Meteor accounts-password包中重设密码后禁止登录?
将重置 link 发送到客人的电子邮件后,我有这个代码来重置密码,
Accounts.resetPassword(this.props.params.token, this.refs.password.value.trim(),(err) => {
if(err){
Bert.alert( err, 'danger', 'growl-top-right');
} else {
Bert.alert( "Password is successfully changed.", 'success', 'growl-top-right');
}
this.setState({resetPassword:false});
this.refs.password.value = "";
});
几秒钟后,它会自动将用户登录到仪表板页面。这里的问题是,我有不同类型的用户,来宾(无法登录),管理员(有权管理用户)和员工(应用程序的已验证用户)。 如果客人重置密码,他们会自动登录,这是错误的。
如何禁用自动登录?
顺便说一下,我正在使用 Meteor + React JS 和 React-router。
这是我的验证登录尝试代码,
Accounts.validateLoginAttempt((data)=>{
if(data.error)
return data.error;
if(!data.user.emails[0].verified)
throw new Meteor.Error(403, 'Verify email account first');
if((data.user.profile && data.user.profile.retired) || (data.user.roles.company.includes("guest")))
throw new Meteor.Error(403, 'Account must be accepted by an admin');
else
return true;
});
您可以使用AccountsServer#validateLoginAttempt(func)
方法来测试传递给回调的对象的user
是否是guest,如果是,return一个假值。
这是在服务器端完成的。
此 answer 提供了一个基于用户是否拥有经过验证的电子邮件的实施示例。