NodeJS 无法从 req.params.token 获取令牌值

2023-12-12

app.post('/reset/:token', function(req, res) {
  async.waterfall([
    function(done) {
      User.findOne({ 'local.resetPasswordToken' : req.params.token, 'local.resetPasswordExpires' : { $gt: Date.now() } }, function(err, user) {
        if (!user) {
          req.flash('resetMessage', req.params.token);
          return res.redirect('back');
        }
  ], function(err) {
    res.redirect('/');
  });
}); 

app.get('/reset/:token', function(req, res) {
    User.findOne({ 'local.resetPasswordToken': req.params.token, 'local.resetPasswordExpires' : { $gt: Date.now() } }, function(err, user) {
        if (!user) {
            req.flash('forgotMessage', req.params.token );
        return res.redirect('/forgot');
        }
        res.render('reset.ejs', { user: req.user, message: req.flash('resetMessage') });
    });
});



<!--Reset.ejs page ResetPassword FORM -->
<form action="/reset/:token" method="post">
    <div class="form-group">
        <label>New Password</label>
        <input type="text" class="form-control" name="newpassword">
    </div>
    <div class="form-group">
        <label>Confirm Password</label>
        <input type="text" class="form-control" name="confirmpassword">
    </div>
    <button type="submit" class="btn btn-warning btn-lg">Reset</button>
</form>

单击后我可以使用 req.params.token 获取“帖子”的令牌http://localhost:8080/reset/fed831abf73150c96f6a3e392b5cbdcaccdeb9bd

后来,当我通过reset.ejs提交“get”时,我无法使用req.params.token检索任何令牌值。

有什么办法解决吗?


我想这个的原始代码可能来自http://sahatyalkabov.com/how-to-implement-password-reset-in-nodejs/。在本教程中,使用了 jade 模板引擎,如果您查看 reset.jade,您会发现它以

形式(方法='POST')

但没有定义任何操作。我不太了解jade,但在您的示例中您使用的是ejs,并且在您的代码中您将操作设置为

表单操作=“/重置/:令牌”方法=“发布”

正如每个人都指出的那样,您发布的路线正是 /reset/:token。所以 req.params 将是 :token 并且重置将失败。您需要做的就是发布与 get 请求中显示的 URL 完全相同的 URL。如果你读过

对 HTML 表单的操作属性使用空 URL 是一个好习惯吗? (动作=“”)

可以看到可以修改你的reset.ejs页面代码来读取

表单操作=“”方法=“帖子”

现在,帖子应该有一个等于 get url 的操作,并且令牌就位,并且应该发生重置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NodeJS 无法从 req.params.token 获取令牌值 的相关文章

随机推荐

  • pThread同步问题

    我面临 pthread 同步问题 threadWaitFunction1 是一个线程等待函数 我预计行号 第247章flag 1仅在 243 246 完成后执行 但我觉得奇怪的是 有时 在243 246还没有完成之前 它就直接跳到247 请
  • Algid 解析错误,不是序列

    当尝试使用该方法从文件中读取 RSA 私钥时 public PrivateKey getPrivateKey throws NoSuchAlgorithmException InvalidKeySpecException IOExcepti
  • 在多台计算机上获取修补程序并导出到 CSV

    如何在输出文件中正确使用 这是我的代码 get content computers txt Where AND Test Connection Quiet foreach Get Hotfix computername Select CSN
  • 在时间序列的背景下分解

    我有一个数据集 我想要整体可视化并按几个不同的变量进行分类 我创建了一个 Flexdashboard 其中包含一个闪亮的应用程序来选择分解类型 并使用工作代码来绘制正确的子集 我的方法是重复的 这向我暗示我错过了更好的方法来做到这一点 让我
  • Laravel:传递默认变量以查看

    在 Laravel 中 我们都以几乎相同的方式将数据传递到视图 data array thundercats gt Hoooooooooooh return View make myawesomeview data 但是有没有什么方法可以将
  • Tomcat 7 中的 URLRewrite

    我计划开发一个内联网应用程序 Java客户端 JSP SQLite 这样做的目标是 当用户单击链接时 如果用户有权访问 在业务逻辑中处理的团队 则应提供文件以供下载 数据库中有一个表保存信息 下面是示例行 ID file team md5
  • 设置大货币数字的格式

    使用 FormatStyle API 是否可以使用 20M 或 10k 等尾随 SI 单位来格式化大数字 特别是 我正在寻找一种使用适当的本地化和货币符号来格式化大货币值 例如 20M 的方法 我目前有一个货币格式化程序 extension
  • 按 Import-CSV 中的最大数值对对象进行排序

    我想要文件顶部的最大值 mailboxSize 我有一个简历作为输入 当我执行以下排序命令时 Import Csv import csv Sort Object MailboxSize DisplayName Descending Expo
  • C++ 函数原型?

    这是新手问题 5 但我没有老师 所以 无论如何 我们开始 我想知道是否有必要将函数原型放在文件顶部 而不是将main函数到文件末尾并在文件顶部创建所有函数 据我所知 VC 和 G 都没有抱怨 是否存在不允许我这样做的标准 当您更改函数参数和
  • 奇怪的 Ajax ComboBox 下拉列表

    我在某个面板中有组合框
  • 删除 display:flex 会在链接周围添加空格。为什么?

    我创建了一个 html 错误页面 它有 2 行显示错误 第二行有主页链接 为了使两条线保持在中心 我创建了一个顶层css grid并使网格的每一行成为flex 我注意到如果我使用display flex对于第二行 周围没有任何空间here链
  • jQuery .toggleClass 不切换 CSS 类

    The highlight开启时课程不工作 button 我究竟做错了什么 HTML
  • 图中2个节点之间的所有路径

    我必须制作一个无信息搜索 广度优先搜索 程序 该程序需要两个节点并返回它们之间的所有路径 public void BFS Nod start Nod end Queue
  • 全屏背景图像被拉伸

    我为我的一个客户制作了一张全屏背景图像 但问题是 当我使用以下 css 代码使图像适合所有屏幕时 bg image img position fixed left 0 top 0 width 100 max height 100 bg im
  • SQL:存储过程中的子句:如何传递值

    我想编写一个 SQL Server 2005 存储过程 它将从用户表中选择并返回一些用户 ID 的用户记录 这些用户 ID 作为参数传递给存储过程 这个怎么做 我可以将用户 ID 作为以逗号分隔的字符串传递 这样我就可以使用 select
  • scanf 和 strcmp 与 c 字符串

    我找到了一个不错的example如何使用 strcmp 但它只能与 fgets 一起使用 并且我需要使其与 scanf 一起使用 所以 这是代码 int main void char fruit apple n char ans 80 do
  • Linq to XML Noob 问题 - 属性上的不同和排序

    我刚刚开始使用 Linq to XML 我有一个简单的文档 其中包含如下记录
  • java.io.File 的 TreePath

    有没有什么简单的方法可以获得File or java nio file Path 就此而言 从TreePath 例如 您有一个JTree像这样 Green Blue Red Yellow Purple jpg Brown jpg Black
  • 我正在阅读《C 编程语言》(第 2 版),但我不明白一个概念:

    我正在阅读 C 编程语言 第 2 版 但我不明白一个概念 有这段代码可以将输入复制到输出 include
  • NodeJS 无法从 req.params.token 获取令牌值

    app post reset token function req res async waterfall function done User findOne local resetPasswordToken req params tok