passportjs不会自动将用户添加到res.locals。passportjs是一个用于身份验证的中间件,它提供了一种简单的方式来处理用户认证和授权。当用户通过身份验证后,passportjs会将用户信息存储在session中,并提供一个req.user对象来访问用户信息。
res.locals是Express框架中的一个对象,用于存储在请求生命周期内共享的本地变量。它通常用于在视图中渲染数据。但是,passportjs并不会自动将用户信息添加到res.locals中。
如果您想将用户信息添加到res.locals中,您可以在passport的中间件中手动实现。例如,您可以在passport的序列化和反序列化函数中将用户信息存储在session中,并在每个请求中将其添加到res.locals中。以下是一个示例:
// 在passport的序列化函数中将用户信息存储在session中
passport.serializeUser(function(user, done) {
done(null, user.id);
});
// 在passport的反序列化函数中从session中获取用户信息
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
// 在Express中间件中将用户信息添加到res.locals中
app.use(function(req, res, next) {
res.locals.user = req.user;
next();
});
在上述示例中,序列化函数将用户的唯一标识存储在session中,反序列化函数根据该标识从数据库中获取用户信息。然后,通过自定义的Express中间件,将用户信息添加到res.locals中,以便在视图中使用。
请注意,以上示例仅为演示目的,实际实现可能因应用程序的需求而有所不同。
领取专属 10元无门槛券
手把手带您无忧上云