gpt4 book ai didi

session - 如何覆盖 node.js 快速 session 的 session ID(使用护照)

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

我正在实现调用我们内部身份验证服务的通行证策略。内部身份验证服务生成 session ID,因此我需要确保连接 session 使用该 ID 而不是默认生成的 ID。

有没有办法做到这一点?是否可以提供我自己的 Hook 函数来连接以生成 session ID?我无法想象它会像设置 session.id 或类似的东西一样简单,因为我无法控制 connect 何时或如何实际创建 session 。

有人解决过这个问题吗?

最佳答案

这无法通过 Connect 的 session 中间件的当前实现来完成,但您可以 fork session 中间件并更改 session ID 的生成方式,即这一行:

https://github.com/senchalabs/connect/blob/master/lib/middleware/session.js#L202

我所说的“fork”是指复制上面的文件,更改 sessionID 的分配并在配置 session 中间件时使用您的新文件。

更新:

以下是我将如何使用自定义 ID 重新生成 session (注意 - 这只是一个想法,我还没有测试过):

// this is the function you'll be calling in your routes or whatever
req.regenerateSession = function(newSid) {
// keep old session data
var oldSessionData = req.session;

// destroy current session and make a new one with your custom id
store.destroy(req.sessionID, function() {
store.generate(req, newSid);

// copy back the session data
// since you don't want to lose it probably
req.session = oldSessionData;
});
}

// replace the session store generate function to accept a custom sessionID
// https://github.com/senchalabs/connect/blob/master/lib/middleware/session.js#L201
store.generate = function(req, customID) {
req.sessionID = customID || utils.uid(24);
req.session = new Session(req);
req.session.cookie = new Cookie(req, cookie);
}

关于session - 如何覆盖 node.js 快速 session 的 session ID(使用护照),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10702399/

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