gpt4 book ai didi

node.js - res.locals 变量为空或超出范围?

转载 作者:搜寻专家 更新时间:2023-10-31 23:46:50 25 4
gpt4 key购买 nike

所以当我登录到我的网站并在相同的 url 中导航时(例如:localhost/private/xxxx),res.locals.user 返回一个对象。

当我超出范围(例如:localhost/xxxx)时,res.locals.user 为空。

/app.js

...
app.use(passport.session());
app.use(require('./controllers'));
...

/controllers/index.js

router.use('/private', require('./member.js'));
router.use('/admin', require('./admin.js'));

/* Some basic routes. */
router.get('/', function(req, res, next) {
res.render('index', { ... });
});

登录后 res.locals.user 这里还是空的


/controllers/member.js

router.use(function isMember(req, res, next) {
if(req.isAuthenticated()) {
res.locals.user = req.user;
return next();
}
req.flash('error', 'WHY YOU LITTLE!');
res.redirect('/login');
});

router.get('/', function(req, res, next) {
res.redirect('/private/index');
});

router.get('/something', function(req, res, next) {
res.redirect('/private/somehting');
});

router.get('/darkside', function(req, res, next) {
res.redirect('/private/darkside');
});

res.locals.user 正确返回用户,无论我导航到 /private/private/something 还是 /私有(private)/黑暗面

是不是因为我在使用 router.use('/private', require('./member.js')); 时使用了中间件路由?我该如何解决这个问题?

最佳答案

res.locals 是传递给应用程序渲染引擎的对象。您可以在护照身份验证策略中通过req.session.user = user设置用户详细信息。以便您可以从任何路由访问用户。

关于node.js - res.locals 变量为空或超出范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37161756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com