提问人:Bram Vanbilsen 提问时间:11/14/2023 更新时间:11/14/2023 访问量:17
使用 express-session 和 passportjs 在创建会话时自动存储值
Automatically store value upon session creation using express-session and passportjs
问:
我正在尝试在创建之前保存向我的会话对象添加令牌。我能够按如下方式执行此操作,因为在调用时会创建令牌:req.logIn
req.logIn(user, (err) => {
if (err) return res.error(401);
req.session.extraToken = generateExtraToken();
return res.success({ redirectPath: "/", uid: user.id });
});
这有效,被存储。但我在代码库中又使用了几次。将来,可能会添加更多此类调用。所以我正在寻找一种方法来自动添加此字段,而无需每次使用 .extraToken
req.logIn
extraToken
req.logIn
这可能吗?它应该只在生成新会话时发生,而不是在更新现有会话时发生。
作为当前的解决方法,我执行以下操作来改进 DX:
function handleLoginAndCreateSessionCreation(req: Request, res: Response, user: Creds, opt?: { redirectPath?: string }) {
req.logIn(user, (err) => {
if (err) return res.error(401);
req.session.extraToken = generateExtraToken();
return res.success({ redirectPath: opt?.redirectPath || "/", uid: user.id });
});
}
这很有帮助,但仍然不是我所追求的,因为开发人员可能会忘记使用它。
我的会话中间件设置如下:
const sessionParser = session({
secret: "my secret",
resave: false,
cookie: { httpOnly: true, secure: true, sameSite: "strict" },
saveUninitialized: false,
proxy: true,
store: createSessionStoreConnection(dbClient),
});
我正在为商店使用 connect-mongo。我真的不希望不必编写自己的商店实现,因为已经过彻底测试。connect-mongo
答: 暂无答案
评论