在 chrome 个选项卡中区分快速会话

Differentiate express-session sessions in chrome tabs

我正在尝试为每个用户分配一个 "req.session.pseudo",但是当我尝试在不同的选项卡中连接时,它会显示相同的会话。

这是一个 "req.session.page_views".

的例子

这是代码:

var express = require('express');
var session = require('express-session');
var app = express();

app.use(session({
secret: 'ssshhhhh',
resave: false,
saveUninitialized: true
}));

app.get('/', function(req, res) {
if(req.session.page_views){
    req.session.page_views++;
    res.send("You visited this page " + req.session.page_views + " times");
} else {
    req.session.page_views = 1;
    res.send("Welcome to this page for the first time!");
}
});

我第一个选项卡上的结果:

Welcome to this page for the first time!

我第二个选项卡上的结果:

You visited this page 2 times

我希望我的问题已经清楚了。谢谢。

Tabs共享cookies,cookies用于识别session。如果选项卡 #1 获得会话 cookie,选项卡 #2 将向服务器发送相同的会话 cookie,因此两个选项卡共享相同的会话。

您可以在浏览器的 "regular" 模式下创建一个会话,在其 "private"(隐身)模式下创建一个会话,但仅此而已(在每种模式下创建的选项卡也共享相同的 cookie对于该模式,至少在 Chrome 中,因此您不能创建多个隐身模式 windows/tabs 并在每个模式中创建一个新会话)。

可能有适用于您最喜欢的浏览器的扩展程序可用于同时创建多个会话,但您必须搜索这些扩展程序。