如何根据传入的 req.url 将 express.cookieSession 设置为路径

How to set express.cookieSession to a path according to the incoming req.url

本文关键字:express cookieSession 设置 路径 url req 何根      更新时间:2023-09-26

我有一个用node.js编写的服务器。 它使用护照登录用户。 我也在使用express.cookieSession。

我有几个客户端,每个客户端都有自己的文件夹(假设将我的应用程序的几个副本服务器到每个客户端)。 我的应用程序的每个副本都将按如下方式访问:

www.mysite.com/client1/...www.mysite.com/client2/...

这是我的服务器代码:

app.configure(function() {
app.use(express.compress());
app.use(express.logger({format: 'dev'}));
app.use(basic.middleware);
app.use(express.cookieParser());
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.static(path.join(__dirname, 'app'), { maxAge: oneYear}));
app.use(express.cookieSession(
    {
        secret: process.env.COOKIE_SECRET || "cantbedecrypted",
        cookie: { maxAge: 1000*60*60 }
    }));
});

的目标是根据这个"client1"或"client2",我想保存一个会话cookie,以便在我请求时.log它将填充该特定的cookie。

我已经在 req.login 函数上完成了此操作,但问题是每次用户进入站点时,它首先在路径"/"处创建一个会话 cookie,在用户登录后它会创建另一个会话 cookie,但这次是在所需的路径上:"/client1/。

这是在登录时保存会话 cookie 的代码:

req.session.cookie.path = '/' + clientName;

问题是当我执行 req.logout() 时,正在销毁的会话 cookie 位于默认路径上:"/",因此用户保持登录状态。

是否可以插入一些中间件,在创建初始会话 cookie 之前检查 req.url,以便它只保存在"/client1/而不是默认的"/"??

我只需要一具骷髅。我尝试过这样的事情,就在app.use express.cookieSession之后

app.use(function (req, res, next) {
check url...
req.session.cookie.path = **desired path
}

但这没有用。

有没有办法在express.cookieSession中使用一些参数或全局变量? 这可以解决我的问题。

我认为你混淆了reqres.您不会修改发送/设置 Cookie req,而是更改res。要重置 cookie,请使用 clearCookie。你可以用它给出路径:

res.clearCookie('name', { path: '/admin' });