【问题标题】:Using hidden input in POST Express在 POST Express 中使用隐藏输入
【发布时间】:2019-12-24 22:17:04
【问题描述】:

我需要使用 get 中的先前数据向快速控制器发送 POST。

我收到了一封电子邮件,要求重置密码链接。用户点击链接,看起来像example.com/user/reset/[reset token]

用户输入新密码,然后发布更新数据库的请求。

但我似乎无法在请求中发布重置令牌

这在我的 GET 控制器中

res.render('resetPassword');
req.body['hiddenToken'] = req.params.token;

但在我的 POST 控制器中,我似乎无法访问 req.body.hiddenToken

隐藏输入的车把代码 <input type="hidden" class="form-control" name="hiddenToken">

获取控制器

// User Reset GET Route -> verifies token, adds a hidden elm to page, posts data
router.get('/reset/:token', (req, res) => {
    PasswordToken.findOne({token: req.params.token})
        .then(token => {
            if (!token) {
                res.render('resetPassword');
                req.body['hiddenToken'] = req.params.token;

            }
            else {
                req.flash('error_msg', 'Token not Found, Try Submitting Again');
                res.redirect('/user/login')
            }
        })
});

在 POST 中,console.log(req.body); 返回

{ hiddenToken: '',
  password: '123456789',
  passwordConf: '123456789' 
}

也许车把中有一种方法可以将参数注入value 标签?

【问题讨论】:

  • 能否显示完整的 GET 请求代码?
  • @JonasWilms 刚刚做到了!谢谢
  • 作为旁注,如果令牌确实存在,则显示Token not found

标签: javascript node.js express handlebars.js


【解决方案1】:

req.body 上设置属性在路由中没有多大意义, 因为它会在之后丢失(请求结束)。正如您所说,您可以将令牌传递给车把:

     res.render('resetPassword', { token: req.params.token });

然后在车把内,将其添加为输入值:

 <input type="hidden" class="form-control" name="hiddenToken" value="{{token}}">

现在令牌在 HTML 中被发送到客户端,然后当用户发送表单时,令牌将作为 POST 请求数据的一部分被发送回。

【讨论】:

  • 非常感谢您的帮助!我很感激。我是新人,所以我不知道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-21
  • 2023-03-22
  • 2012-06-14
  • 2011-12-06
  • 1970-01-01
  • 2013-11-17
相关资源
最近更新 更多