Url Meteor重置密码-单击电子邮件链接不会';行不通
正在尝试在我的meteor应用程序中实施密码恢复 我可以生成指向我的应用程序的恢复电子邮件:Url Meteor重置密码-单击电子邮件链接不会';行不通,url,hash,meteor,token,Url,Hash,Meteor,Token,正在尝试在我的meteor应用程序中实施密码恢复 我可以生成指向我的应用程序的恢复电子邮件: onemore.meteor.com/#/reset Password/[token] 当我单击此链接时,它会转到URL,但随后URL会立即重写为onemore.meteor.com/# 当我键入Session.get(“resetPassword”)时,它返回undefined 我知道代币是有效的。如果我复制电子邮件“[token]”中链接的后一部分并将其粘贴到控制台中,如Session.set(“r
onemore.meteor.com/#/reset Password/[token]
当我单击此链接时,它会转到URL,但随后URL会立即重写为onemore.meteor.com/#
当我键入Session.get(“resetPassword”)
时,它返回undefined
我知道代币是有效的。如果我复制电子邮件“[token]”中链接的后一部分并将其粘贴到控制台中,如Session.set(“resetPassword”,[token])
,密码恢复表单将按预期运行
为什么我的URL会在加载时重写?这种情况会发生吗?在重写之前,我需要解释一下吗
谢谢您可以尝试使用以下方法从重置URL中删除#:
Meteor.startup(function () {
Accounts.emailTemplates.resetPassword.text = function (user, url) {
url = url.replace('#/', '')
return " To reset your password, simply click the link below:\n\n"
+ url;
};
});
另请参见我认为您需要自己添加路线 对于带有咖啡脚本的铁制路由器,它可能喜欢
Router.route '#/reset_password/:token',
name: 'reset_password'
onBeforeAction: ()->
if Meteor.userId() then this.redirect('/') else this.next()
Accounts._resetPasswordToken = this.params.token
您还应该添加重置密码模板。这个问题我已经有很长时间了,它最终得到了解决 事实证明,重置密码的过程将重置密码令牌存储在会话变量中 在我的例子中,每当用户ID发生更改时,我都会清除所有会话变量,这将清除令牌,从而禁用对话框的显示
现在,我只清除了我使用的会话变量(而不是调用session.clear()),问题最终得到了解决。您可以按如下方式设置URL:
Meteor.startup(() => {
Accounts.urls.resetPassword= (token) => {
return Meteor.absoluteUrl('reset-password/' + token);
};
});
这比替换整个电子邮件文本要好