passportjs中间件未使用错误-使用expressjs、书架、express会话



我正在尝试用sqlite3/bookfor.js模块实现passport.js模块。这是我的部分代码:

var session = require('express-session');
app.use(session({
  secret: 'secret cat',
  proxy: true,
  resave: true,
  saveUninitialized: true
 }));
 var User = bookshelf.Model.extend({
    tableName: 'users'
 });
var passport = require('passport'), LocalStrategy = require('passport-local').Strategy;
passport.use(new LocalStrategy(function(username, password, done) {
  new User().where({username: username, password: password}).fetch()
  .then(function(user){
    if (user === null) {
        return done(null, false, {message: 'Invalid username or password'});
    }
    return done(null, user.toJSON());
  });
}));
app.post('/login', passport.authenticate('local', { successRedirect: '/', failureRedirect: '/login', failureFlash: true }));

以下是我所有的依赖项:

"dependencies": {
 "bluebird": "^2.9.14",
 "body-parser": "~1.10.2",
 "bookshelf": "^0.7.9",
 "cookie-parser": "~1.3.3",
 "debug": "~2.1.1",
 "express": "~4.11.1",
 "express-session": "^1.10.4",
 "hbs": "~2.8.0",
 "knex": "^0.7.6",
 "morgan": "~1.5.1",
 "passport": "^0.2.1",
 "passport-local": "^1.0.0",
 "serve-favicon": "~2.2.0",
 "sqlite3": "^3.0.5"
}

如果我写错了用户名和密码,我会被正确重定向。然而,如果我使用正确的数据登录,我会收到以下错误:

Unhandled rejection Error: passport.initialize() middleware not in use 
at IncomingMessage.req.login.req.logIn

你知道我可能做错了什么吗?

啊,刚刚找到它文档:在基于Connect或Express的应用程序中,需要passport.initialize()中间件来初始化passport。

http://passportjs.org/guide/configure/

最新更新