护照未初始化吗?

时间:2018-06-22 19:33:33

标签: express passport.js express-session

我试图在我的expressjs应用中返回当前用户数据,但它一直返回undefined,并且从未调用过我的serializeUserdeSerializeUser函数。

这是我的app.js文件:

var express       = require('express')
var app           = express()
var mongoose      = require('mongoose');
var passport      = require('passport');
var config        = require('./config/database');
var api           = require('./routes/api');

mongoose.connect(config.database, { 
  promiseLibrary: require('bluebird') })
  .then(() =>  console.log('connection succesful'))
  .catch((err) => console.error(err));

app.use(express.json());
app.use('/api', api);
app.use(express.urlencoded({ extended: false }));

app.use(require('express-session')({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: false
}));

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

passport.serializeUser(function(user, done) {
  console.log('serial');
  done(null, user.id);
});

passport.deserializeUser(function(id, done) {
  console.log('deserial');
  User.findById(id, function (err, user) {
    done(err, user);
  });
});

app.listen(3000, () => console.log('Example app listening on port 3000!'))

module.exports = app;

在Angular前端上,我有:

ngOnInit() {
  this.currentUser();
}

public currentUser (){
  this.http.get('/api/profile').subscribe(data => {
    this.user = data;
    console.log(this.user);
  });
}

在我的api.js文件中,我具有以下路线:

router.get('/profile', function(req, res, next) {
  console.log(req.user);
});

我期望它返回当前的用户对象,但是它返回undefined,但是我的console.log()serializeUser都看不到deSerializeUser ExpressJS命令行。

另外,当我检查“网络”标签时,我看到api/profile通话停留在pending状态。

我想念什么?

0 个答案:

没有答案