gpt4 book ai didi

node.js - NodeJS Express - 如何在路由器内添加 session 数据?

转载 作者:太空宇宙 更新时间:2023-11-03 22:27:34 24 4
gpt4 key购买 nike

我需要添加一些 session 数据快速路由器(使用快速 session 和 Passport )。

我将数据正确存储到数据库(mongo)中的用户记录中,并尝试将值设置为 session 数据:

req.user.myData = "my session data";

不幸的是,用户数据仅在用户通过 Passport 授权期间被序列化。因此“myData”不会存储到当前 session 中。当新用户 session 启动时,数据会从数据库正确加载并可用。

有什么方法(我希望如此)可以在当前 session 中提供数据吗?

最佳答案

ExpressJS 世界中的大多数此类事情都是使用中间件完成的:

1)在middlewares文件夹中创建js文件:populateUserData.js:

'use strict';

module.exports = (req, res, next) => {
if(!req.user) req.user = {};
req.user.someData = 'something';

next();
}

2.1)将其附在 Passport 后面:

app.use(passport.initialize());
app.use(passport.session());
app.use(require('./middlewares/populateUserData'));

2.2) 将其附加到特定路由:

const populateUserData = require('./middlewares/populateUserData');

route.get('/api/users/me',
passport.authenticate('basic', { session: false }),
populateUserData,
(req, res) => {
res.json({ id: req.user.id, username: req.user.username });
});

2.3) 在路线组中:

app.use('/api/users',
passport.authenticate('basic', { session: false }),
require('./middlewares/populateUserData'),
require('./routes/api/users'));

您还可以创建自己的中间件,这会很有帮助,

例如:https://github.com/num8er/alttab-nodejs-challenge/blob/master/app.js#L19

关于node.js - NodeJS Express - 如何在路由器内添加 session 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43561265/

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