在login表单中使用护照时得到不好的要求

我正在尝试在nodejs中使用护照本地会话创build一个用户login[.ejs文件]窗体。 我的问题是,当我点击提交button时,我一直在收到不好的请求,任何人都可以检查我的代码,并帮助我

这是我的nodejs代码:

需要:

var express = require('express'); var bodyParser = require('body-parser'); var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var cookieParser = require('cookie-parser') var expressSession = require('express-session'); var mongodb = require('mongodb'); var mongoose = require('mongoose'); var app = express(); var MongoClient = mongodb.MongoClient; app.use(expressSession({ secret: 'secret' })); app.use(passport.initialize()); app.use(passport.session()); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.set('view engine', 'ejs'); 

护照:

 var user = mongoose.model('val', Schema); passport.use(new LocalStrategy({ passReqToCallback: true }, function (firstName, password12, done) { console.log("entered Function"); user.findOne({ firstName: firstName }, function (err, firstName) { if (err) { return done(err); } if (!firstName) { console.log('User Not Found ' + firstName); } if (!isValidPassword(firstName, password12)) { console.log('Invalid Password'); } else { console.log('correct'); return done(null, firstName); } } ); })); 

login页面:

 app.get('/login', function (req, res) { res.render('login'); }); app.post('/login', passport.authenticate('local'), function (req, res){ var userInfo = req.body; }); 

我相信你已经发布了部分Nodejs文件代码? 在哪里调用身份validationfunction的代码

 app.post('/login', passport.authenticate('local'), function (req, res) { var userInfo = req.body; }); 

除了validation方法之外,还需要passport.serializeUser和passport.deserializeUser方法。 护照调用这两个function,他们是必要的。

这里是演示代码。 请编写自己的代码,并将其作为参考

 passport.serializeUser(function (user, done) { done(user.Id); // the user id that you have in the session }); passport.deserializeUser(function (id, done) { done({id: Id}); // generally this is done against user database as validation }); 
 passReqToCallback: true 

如果你使用这个,比添加req代码。 下一行应该是:

 function (req, firstName, password12, done) { 

你的邮件路由器必须是这样的:

 app.post('/login', passport.authenticate('local', { failureRedirect: '/login' }), function(req, res) { res.redirect('/'); });