2016-01-13 66 views
0

我使用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); 

我的登录请求会在控制台中显示消息而触发,但这就是它?

任何想法?

回答

0

你错过了几件事情。

app.use(express.urlencoded()); 
app.use(passport.initialize()); 

您可能还需要处理序列化您的用户对象。

相关问题