在我的nodejs app中过滤所有输入数据我使用了express-validator。像这样:
app.post('/', function (req, res) {
req.sanitize('login').xss();
req.sanitize('password').xss();
//etc.
});
所以我的观点是:
form(action='/', method='POST')
input(name='login', type='text')
input(name='password', type='password')
input(type='submit')
一切正常,但如果我省略登录字段,例如:
form(action='/', method='POST')
input(name='login', type='text')
input(name='password', type='password')
input(type='submit')
然后我得到例外。为什么不存在express-validator检查param?
答案 0 :(得分:8)
根据the documentation你错了。
验证错误
如何获得验证错误有两种选择:
req.assert('email', 'required').notEmpty(); req.assert('email', 'valid email required').isEmail(); req.assert('password', '6 to 20 characters required').len(6, 20); var errors = req.validationErrors(); var mappedErrors = req.validationErrors(true);
您需要使用req.assert进行验证。 req.sanitize是清理输入,如下所示:
req.sanitize('postparam').toBoolean();