Req用户即使在序列化后也未定义

时间:2016-07-18 11:06:48

标签: javascript node.js

问题在于我想要传递对象来查看。我收到一条消息,用户未定义。在if语句为Match和serializeUser函数之后定义该对象。我不知道为什么我在前往大厅的途中失去了这个目标。 我在这里发布路线代码。

var express = require('express');
var router = express.Router();
var User = require('../models/user');
var Facebook = require('../models/facebook');
var passport = require('passport')
var LocalStrategy = require('passport-local').Strategy;
var FacebookStrategy = require('passport-facebook').Strategy;

router.get('/lobby', function(req, res){
    console.log("User req "+req.user);// here I got the message user undefined and I do not know why
    res.render('lobby',{ user:req.user});
   // res.render('lobby');
});

router.get('/logout',function(req, res){
    req.logout();
    req.flash('success_msg', 'You have been logged out');
    res.redirect('/');
});

function ensureAuthenticated(req, res, next){
    if(req.isAuthenticated()){
        return next();
    }else{
        res.redirect('/');
    }
}

router.post('/login', passport.authenticate('local', {
    successRedirect : '/users/lobby',
    failureRedirect : '/',
    failureFlash : true
}));


//Passport strategy
passport.serializeUser(function(user, done) {
    console.log("serizlize "+user); //here I got object user and it is defined 
    done(null, user.id);
});

passport.deserializeUser(function(id, done) {
    User.getUserById(id, function(err, user) {
        done(err, user);
    });
});

passport.use(new LocalStrategy(
    function(username, password, done) {
        User.getUserByUsername(username, function(err, user){
            if(err) throw err;
            if(!user){
                return done(null, false, {message: 'wrong data'});
            }
            User.comparePassword(password, user.password, function(err, isMatch){
                if(err) throw err;
                if(isMatch){
                    return done(null, user);
                }else{
                    return done(null, false,{message: 'wrong data'});
                }
            });
        });
    }));


module.exports = router;

enter link description here

******* *****编辑 问题解决了。我只是红了,你必须在护照会议之前进行快速会议。这对我行得通。 在您的服务器文件中(我的是app.js)

//express session
app.use(session({
    secret: 'yoursecrethere',
    saveUninitialized: true,
    resave: false
}));

//Passport init
app.use(passport.initialize());
app.use(passport.session());

0 个答案:

没有答案