在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('/'); });
- 如何在Express中间件中使用next()内passport.authenticate(…)?
- 一旦authentication,总是去索引页面,而不是login
- 如何在使用护照-http Basic +护照 – 本地组合时防止www-authenticate头
- 护照loginauthentication没有密码字段
- ejs模板没有正确渲染
- passport.initialize()中间件不用于Express 4.10自定义callback
- ReactJs前端和Passport NodeJs后端
- req.isAuthenticated()用login用户返回false
- 在passport.js中,中间件方法“本地注册”具有唯一的密钥电子邮件和密码。 可以改变或不改变