标签: express-validator

检查输入是否有空格并使用 Express 显示错误消息的最佳方法

我正在尝试验证用户名字段,但我不希望字符串中有任何空格。我想向用户显示一个错误。

我正在使用 express-validator express 中间件来验证输入。它适用于所有其他情况,但我不知道验证没有空格的最佳方法。

https://www.npmjs.com/package/express-validator

我的代码

这就是我所拥有的,但目前可以将带空格的用户名存储在数据库中。

check('user_name').isLength({ min: 1 }).trim().withMessage('User name is required.')
Run Code Online (Sandbox Code Playgroud)

理想情况下,我可以使用快速验证器方法。

谢谢你。

node.js express express-validator

1
推荐指数
1
解决办法
3609
查看次数

我怎么知道我的输入正在被 express-validator 清理?

我已经实施express-validator并正在尝试清理用户正在搜索特定查询的输入字段。

我使用的测试查询是<script>Malicious code</script. 当请求进来时,我使用:

req.sanitizeQuery('searchQuery');
Run Code Online (Sandbox Code Playgroud)

当我然后检查查询是否已被清理时,该字符串没有以任何方式被更改/清理。

我在这里可能从根本上误解了消毒,在这种情况下,请指出。如果我是,那么我可以去填补我的知识空白,但与此同时,我可以向我的消毒剂抛出什么“测试”查询以检查它是否有效?

javascript sanitization node.js express express-validator

1
推荐指数
1
解决办法
2845
查看次数

express-validator isEmpty没有错误

我在expressjs应用程序中使用express-validator 5.2.0。我在表单数据上实现了验证。但是它不会捕获错误,而是提供空错误对象。验证运行时,当我提交空白表格时,它显示“无错误”。它应遵循错误路径并应显示错误。

var express = require('express');
var router = express.Router();
const { check, validationResult } = require('express-validator/check');

router.post('/register', [
  check('firstName', 'First Name is required').isEmpty(),
  check('lastName', 'Last Name is required').isEmpty(),
  check('username', 'User Name is required').isEmpty(),
  check('password', 'Password is required').isEmpty()
], (req, res, next)=>{
  let errors = validationResult(req);
  if (!errors.isEmpty()) {
    console.log(errors.mapped());
    console.log("errors")
    return res.render('auth/register', { errors: errors.mapped() })
  }else{
    console.log('no errors')
    return res.render('auth/login');
  }
Run Code Online (Sandbox Code Playgroud)

express express-validator

1
推荐指数
2
解决办法
3656
查看次数

护照验证卡住并且不返回任何值

这个验证工作正常

app.post('/login', passport.authenticate('local-login', {
    successRedirect: '/home',
    failureRedirect: '/login',
    failureFlash: true
  })
);
Run Code Online (Sandbox Code Playgroud)

但我试图在使用快速验证器进行身份验证之前验证表单的字段。

我带着那个来的

app.post('/login', function(req, res){
  req.checkBody('email', 'Email is required').notEmpty();
  req.checkBody('email', 'Email is not valid').isEmail();
  req.checkBody('password', 'Password is required').notEmpty();
  var validationErr = req.validationErrors();

  if (validationErr){
    res.render('login', {
      errors: validationErr,
      failureFlash: true
    });
  } else {
    // authenticate once fields have been validated
    passport.authenticate('local-login', {
        successRedirect: '/home',
        failureRedirect: '/login',
        failureFlash: true // allow flash messages
    })
  }
});
Run Code Online (Sandbox Code Playgroud)

使用第二个代码,当我提交表单时没有任何反应,并且客户端给出错误消息localhost一段时间后没有发送任何数据。第一部分工作正常,当我提交空表单并达到验证方法时,我可以看到所有错误。我怀疑这个问题可能部分回答我的问题或者有点相关,但我无法理解。

Passport.js文档提供了一个带有函数的示例,但仅当身份验证成功时才会调用该函数,因此之后。我想在身份验证之前执行字段验证。

如果您需要护照验证码,请告诉我。

javascript node.js express express-validator

1
推荐指数
1
解决办法
3026
查看次数

如何在使用 validator.js 检查 .isAlpha 时包含许多语言环境

在开发express.js 应用程序时,我使用 Express-validator 中间件验证(服务器端)输入。对于必须仅包含希腊语或英语字母的特定输入,我尝试isAlpha(['el-GR', 'en-US'])按照 validator.js 库的建议进行操作。

但是,在测试时,我收到此错误:

无效区域设置“el-GR,en-US”

我究竟做错了什么?

validation node.js express express-validator

1
推荐指数
1
解决办法
2757
查看次数

如何检查输入字段中的输入是否仅在express-validator中包含字母

如果输入字段(即名称)不仅由 Express-validator 中的字母组成,我会尝试给出错误

req.check('name')
     .isLength({min:3}).withMessage('Name must be of 3 characters long.')
     .isAlpha().withMessage('Name must be alphabetic.');
Run Code Online (Sandbox Code Playgroud)

但是当我在“名称”输入字段中输入“John Doe”时,它显示“名称必须是字母”而不是成功验证

node.js express-validator

1
推荐指数
1
解决办法
5629
查看次数

使用express-validator检查输入是否是用户名或电子邮件

我正在尝试验证登录请求,它接受用户名(可以是电子邮件或用户名)和密码。我如何使用 Express-Validator 来做到这一点?

我正在阅读文档,验证器的工作方式是您必须将数据作为第二个参数传递。我不确定如何检查它是否也是用户名或密码。

router.post("/", (req, res) => {
    const { nickname, password } = req.body;
    // Create a new object based on email or username
    const login = {};
    if (nickname.indexOf('@') === -1) {
        login.nickname = nickname;
    } else {
        login.email = nickname;
    }
    login.password = password;
    // JWT Sign...
});
Run Code Online (Sandbox Code Playgroud)

通过验证器,我还想检查它是否是

  • 用户名或电子邮件
  • 如果是电子邮件,请使用 isEmail() 验证器确保它是真实的电子邮件
  • 如果是用户名,请确保它超过三个字符并且有一个实际的用户名。

试图

router.post("/", (req, res) => {
    const { nickname, password } = req.body;
    // Create a new object based on email or …
Run Code Online (Sandbox Code Playgroud)

node.js express express-validator

0
推荐指数
1
解决办法
2万
查看次数

使用 express-validator、express、mongoose 和 Next.js 将标头发送到客户端后无法设置标头

我建立使用登录/注册形式表达,验证猫鼬next.js

听说最好的做法是清理前端后端的数据。

我在前端进行了一些验证(即检查是否通过 Regex 发送电子邮件并确保密码具有特定长度)。

但是现在我想使用自定义验证器来检查我的 mongodb 数据库中是否存在电子邮件。

    .post(body('username').custom(value => {
        UserModel.findOne({ 'email': value }).then(user => {
            if (user) {
                return Promise.reject('E-mail already in use');
            }
        });
    }), 
Run Code Online (Sandbox Code Playgroud)

这是我的其余代码:

var router = require('express').Router()
var UserModel = require('../models/UserModel')
var { body } = require('express-validator');

router
    .route('/registration')
    .get(function(req, res) {
        UserModel.find({}, (err, users) => {
            if (err) res.status(500).send(err)
            res.json(users)
        })
    })
    .post(body('username').custom(value => {
        UserModel.findOne({ 'email': value }).then(user => {
            if (user) …
Run Code Online (Sandbox Code Playgroud)

mongoose node.js express next.js express-validator

0
推荐指数
1
解决办法
6768
查看次数