【发布时间】:2017-04-30 02:58:35
【问题描述】:
我是nodejs 的新手,所以我正在尝试制作一个身份验证系统。我在遵循教程后实现了它。
为了在通过身份验证时获取用户对象,您需要将其存储在会话中。我通过如下配置express-session 来做到这一点:
require('./config/passport')(passport); // pass passport for configuration
app.use(session({
secret: 'thisisagreatgreatsecretforthesession',
resave: true,
saveUninitialized: true
}));
app.use(morgan('dev'));
app.use(cookieParser());
app.use(bodyParser.urlencoded({ extended : false }));
app.use(bodyParser.json());
app.use(passport.initialize());
app.use(passport.session());
app.use(flash());
app.use(function(req, res, next) {
res.locals.user = req.user;
next();
});
var routes = require('./app/routes')(app, passport);
然后在护照中我配置了序列化和反序列化功能如下:
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
我试图在deserializeUser 函数中安慰用户,它是正确的。但是,当我在模板中调用 user 时,我收到一条错误消息,指出未定义用户。
我是否在配置中遗漏了其他内容?
【问题讨论】:
标签: node.js session express passport.js