nodejs,passportjs本地策略未运行
问题描述:
我使用express和passport来构建休息api后端,并且似乎我的localStrategy没有按请求调用。nodejs,passportjs本地策略未运行
var express = require('express');
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var app = express();
var port = process.env.PORT || 3000;
app.get('/', function(req, res) {
res.render('index.ejs');
});
app.get('/login', function(req, res) {
console.log('login /GET');
res.render('login.ejs');
});
passport.use('local', new LocalStrategy({
usernameField : 'username',
passwordField : 'password'
},
function(username, password, done) {
console.log('local strategy');
return done(null, {username : 'username'});
}
));
app.post('/login', function(req, res, next){
passport.authenticate('local', function(err, user, info) {
console.log('auth run');
if (err) {
return next(err);
}
if (!user) {
return res.redirect('/login');
}
req.logIn(user, function(err) {
if (err) { return next(err); }
return res.redirect('/users/' + user.username);
});
})(req, res, next);
});
app.listen(port);
console.log('listenting http://localhost:' + port);
我的登录请求会在控制台中显示消息而触发,但这就是它?
任何想法?
答
你错过了几件事情。
app.use(express.urlencoded());
app.use(passport.initialize());
您可能还需要处理序列化您的用户对象。