Javascript 在meteor中为自定义路由设置重置密码令牌
我正在使用meteor中的帐户密码构建一个自定义身份验证系统。我的问题是,为什么当我删除meteor为重置密码链接提供的默认哈希时,我也会丢失我的重置密码令牌会话?到目前为止,我有这个代码,但我不能访问我的模板中的条件来更改我的密码。设置自定义重置密码路由时似乎出现问题 路由器.js 重置密码.html server/config.js 同样,我有:Javascript 在meteor中为自定义路由设置重置密码令牌,javascript,meteor,iron-router,Javascript,Meteor,Iron Router,我正在使用meteor中的帐户密码构建一个自定义身份验证系统。我的问题是,为什么当我删除meteor为重置密码链接提供的默认哈希时,我也会丢失我的重置密码令牌会话?到目前为止,我有这个代码,但我不能访问我的模板中的条件来更改我的密码。设置自定义重置密码路由时似乎出现问题 路由器.js 重置密码.html server/config.js 同样,我有: this.route('password.reset', { path: '/password/reset/:token',
this.route('password.reset', {
path: '/password/reset/:token',
onBeforeAction: function() {
Accounts._resetPasswordToken = this.params.token;
this.next();
},
template: 'resetPassword'
});
并将if(Accounts.\u resetPasswordToken)移动到onCreate
Template.resetPassword.onCreated(function() {
if(Accounts._resetPasswordToken) {
Session.set(RESET_PASSWORD, Accounts._resetPasswordToken);
}
...
if (Accounts._resetPasswordToken) {
Session.set('resetPasswordToken', Accounts._resetPasswordToken);
}
Template.resetPassword.helpers({
resetPassword: function() {
return Session.get('resetPasswordToken');
}
});
Template.resetPassword.events({
"submit .forgot-password": function(event) {
// Prevent default browser form submit
event.preventDefault();
// Get value from form element
email = event.target.email.value;
if (email) {
Accounts.forgotPassword({email: email}, function (error) {
if (error) {
if (error.message === 'User not found [403]') {
throwAlert('This email address does not exist.', 'danger');
} else {
throwAlert('We are sorry but something went wrong.', 'danger');
}
} else {
throwAlert('We have sent you an email with basic instructions to reset your password.', 'success');
}
});
} else {
throwAlert('Your email address cannot be empty.', 'danger');
}
},
"submit .reset-password": function (event) {
// Prevent default browser form submit
event.preventDefault();
// Get value from form element
password = event.target.password.value;
// If the password is valid, we can reset it.
if (password) {
Accounts.resetPassword(Session.get('resetPasswordToken'), password, function (error) {
if (error) {
throwAlert('We are sorry but something went wrong.', 'danger');
} else {
throwAlert('Your password has been changed. Welcome back!', 'success');
Session.set('resetPasswordToken', null);
Router.go('postsList');
}
});
} else {
throwAlert('Your password cannot be empty. Create a good one!', 'danger');
}
}
});
Meteor.startup(function() {
Accounts.emailTemplates.resetPassword.text = function(user, url) {
var token = url.substring(url.lastIndexOf('/') + 1, url.length);
var newUrl = Meteor.absoluteUrl('reset-password/' + token);
var str = 'Hello, \n';
str+= 'Click on the following link to reset your password \n';
str+= newUrl;
return str;
};
});
this.route('password.reset', {
path: '/password/reset/:token',
onBeforeAction: function() {
Accounts._resetPasswordToken = this.params.token;
this.next();
},
template: 'resetPassword'
});
Template.resetPassword.onCreated(function() {
if(Accounts._resetPasswordToken) {
Session.set(RESET_PASSWORD, Accounts._resetPasswordToken);
}
...