如何使用Node和Passport验证非空字段?

时间:2017-05-12 14:08:56

标签: node.js validation passport.js

我需要为登录验证非空字段(发布请求),但是我收到此错误:

TypeError: req.checkBody is not a function
    at D:\IDoo projects\ExpressGenerado\config\routes.js:76:9

这是我的路线档案:

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

    if (errors) {

        res.render('signup',{message: req.flash('loginMessage')});

    }
    else{
        passport.authenticate('local-login', {
            successRedirect : '/profile', // redirect to the secure profile section
            failureRedirect : '/login', // redirect back to the signup page if there is an error
            failureFlash : true // allow flash messages
        })(req,res); 
    }
}); 

我的入口点应用文件,在添加app.use(expressValidator)后,我的网络挂起并且没有验证,它什么都不做:

var express = require('express');
var expressValidator = require ('express-validator');
var app = express();
var multer = require('multer')
var constants = require('constants');
var constant = require('./config/constants');   

var port = process.env.PORT || 8042;
var passport = require('passport');
var flash = require('connect-flash');
var path = require('path');

var morgan = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var session = require('express-session');

var dateFormat = require('dateformat');
var now = new Date();
app.use(expressValidator); 
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));


require('./config/passport')(passport); // pass passport for configuration


app.use(morgan('dev')); // log every request to the console
app.use(cookieParser()); // read cookies (needed for auth)

app.use(express.static(path.join(__dirname, 'public')));
app.set('views', path.join(__dirname, 'app/views'));
app.set('view engine', 'ejs');

app.use(session({ secret: 'zomaareenstukjetekstDatjenietzomaarbedenkt' })); 
app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions
app.use(flash()); // use connect-flash for flash messages stored in session


require('./config/routes.js')(app, passport); // load our routes and pass in our app and fully configured passport

app.listen(port);
console.log('The magic happens on port ' + port);

1 个答案:

答案 0 :(得分:1)

你这样做:

app.use(expressValidator);

但是,expressValidator是一个返回中间件函数的函数,所以你需要像这样使用它:

app.use(expressValidator());