在 POST Express 中使用隐藏输入

Using hidden input in POST Express

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

我收到了一封重设密码的电子邮件link。用户单击 link,它看起来像 example.com/user/reset/[reset token]

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

但我似乎无法 post 带有请求的重置令牌

这在我的 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); returns

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

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

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

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

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

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

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