Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Url Meteor重置密码-单击电子邮件链接不会';行不通_Url_Hash_Meteor_Token - Fatal编程技术网

Url 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

正在尝试在我的meteor应用程序中实施密码恢复

我可以生成指向我的应用程序的恢复电子邮件:

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);
    };
});
这比替换整个电子邮件文本要好