我试图在我的expressjs应用中返回当前用户数据,但它一直返回undefined
,并且从未调用过我的serializeUser
和deSerializeUser
函数。
这是我的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
状态。
我想念什么?