node.js - 反序列化用户,序列化用户未被调用,passportjsexpress

标签 node.js express passport.js

我正在使用passportjs来管理登录,看起来序列化和反序列化函数没有被调用。

var express = require('express'),
    config = require('./config/conf'),
    app = express(),
    cookieParser = require('cookie-parser'),
    bodyParser = require('body-parser'),
    session = require('cookie-session'),
    mongoose = require('mongoose'),
    passport = require('./config/passport'),
    auth = require('./config/auth'),
    userAuth = require('./userAuth'),
    appSetup = require('./appSetup'),
    port = 3001,
    api = require('./api'),
    admin = require('./admin');

// Connect to mongodb
var connect = function () {
    var options = {server: {socketOptions: {keepAlive: 1}}};
    mongoose.connect(config.dbAddress, options);
};
connect();
appSetup();

mongoose.connection.on('error', console.log);
mongoose.connection.on('disconnected', connect);

app.use(cookieParser());
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({extended: true})); 

app.use(session({
    keys: ['dfhdjf376gdhjgssjgsdfjdfgjdf', 'dkjjksdsdsdsd1d22sdsjksd', 'kjksdj665656kddfdffjkdf5skdj']
}))

app.use(passport.initialize());
app.use(passport.session());

app.use('/auth', userAuth(passport));
app.use('/api', auth.api, api);
app.use('/admin', auth.admin, admin);

app.use(express.static(__dirname + '/public'));

app.listen(port, function() {
    console.log('listening on ' + port);
});

Passport 配置文件

var passport        = require('passport');
var LocalStrategy   = require('passport-local');
var User            = require('../models/user');

// used to serialize the user for the session
passport.serializeUser(function(user, done) {
    console.log('in ser');
    done(null, user._id);
});

// used to deserialize the user
passport.deserializeUser(function(id, done) {
    console.log('in deser');
    User.findById(id, function(err, user) {
        done(err, user);
    });
});

passport.use(new LocalStrategy(function(username, password, done) {
    User.findOne({username: username}, function(err, user) {
        if(err) return done(err);

        if(!user) {
            return done(null, false, { message: 'Could not find a user with that username or email'});
        }

        if(user.validPassword(password)) {
            return done(null, user);
        } else {
            return done(null, false, { message: 'Incorrect Password' });
        }
    });
}));

module.exports = passport;

最佳答案

将您的代码与 passportjs.org 中的示例进行比较,我看到你使用

LocalStrategy = require('passport-local');

而他们使用:

LocalStrategy = require('passport-local').Strategy;

看看他们的例子 http://passportjs.org/guide/configure/

关于node.js - 反序列化用户,序列化用户未被调用,passportjsexpress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27468323/

相关文章:

node.js - gulp sass 源码图

javascript - 返回数据库中插入对象的信息

在静态路由上使用 Express 进行 AJAX 抓取

node.js - 使用 POST 数据通过 node.js 写入本地文件并表示

javascript - MEAN Web Development 2en 中的一些代码令人困惑

Express session 与 PassportJS session

sql-server - NodeJs MSSQL 组合多个查询的结果

node.js - 如何使用 Node.js 响应命令行提示符

express - Passport 本地临时密码(首次登录时更改)

node.js - Websocket 传输在我的 Firefox/Chrome(Windows 版本)上不起作用