我正在研究express-validator。
“router.post”未经验证就通过
我在html中输入了表单和密码。
<body>
<h1>Hello Guys!</h1>
<p>Fill in your id number.</p>
<form action="/yournumber/sub" method="POST">
<input type="password" name="password">
<button type="submit">Summit</button>
</form>
</body>
该密码调用 router.post
这是我的路由器代码。
但无论密码长度如何,这篇文章都会运行重定向。
我怎样才能正确地制作?
router.post('/yournumber/sub', (req, res, next) => {
req.check('password').isLength({min: 4});
var errors = req.validationErrors();
if (errors) {
req.session.errors = errors;
req.session.success = false;
console.log('error');
} else {
req.session.success = true;
console.log('suc')
}
res.redirect('/ab');
});
最佳答案
我不知道 req.check()
- 符号,并且在 official documentation 中找不到它,但是:
我使用这个模块的方式是作为一个快速中间件。您可以检查链接文档中的片段。这是您的改编代码:
const validation = [
check('password').isLength({min: 4})
];
router.post('/yournumber/sub', validation, (req, res, next) => {
var errors = validationResult(req);
if (errors.isEmpty()) {
// valid
} else {
// not valid
}
});
如您所见,validation
数组作为路由的另一个处理程序传入。它的工作方式与您的处理程序相同:
- 检查参数是否有效,如
check()
函数指定的那样 - 如果没有,请将信息添加到
req
-object - 调用
next()
进行下一个验证或处理程序。
然后,当您想要检查结果时,请使用 validationResult()
(您拼写错误并作为 req
的方法调用,而不是将其传递给该方法)。
关于node.js - 我的简单代码不适用于快速验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53958147/