Sails.js - 如何为每个浏览器选项卡创建唯一会话

时间:2016-03-05 20:44:10

标签: sails.js

当我从浏览器选项卡运行Sails应用程序时,我会得到一个唯一的会话,您可以在其中存储身份验证信息。如果您在其他浏览器选项卡中启动相同的应用程序,则会话是相同的,因此已经过身份验证。虽然有用,但我不希望如此。我希望每个浏览器选项卡都有一个完全唯一的会话。这是可能的,如果是的话,怎么样? sails.sid是如何生成的?我想也许我可以产生一个独特的秘密,但当然我的代码看到它的时间已经太晚了。

显然我根本不必使用req.session,并为每个标签生成我自己的唯一标识符和存储,但是如果可以的话我想使用标准会话。

2 个答案:

答案 0 :(得分:1)

您不能为同一浏览器实例中的每个标签创建唯一会话。 会话的工作方式不适合您想要实现的目标。

一种解决方案是使用套接字来识别选项卡。注意,您无法重新加载页面,因为每次都会获得一个新套接字。

答案 1 :(得分:0)

您需要脏黑客

  1. 每个标签都有唯一的 socketId
  2. 因此,您可以将此 socketId 用作 sessionId
  3. beforeConnect()处理socketId = sessionId&的逻辑如果需要,可以将它存放在某处。
  4. afterDisconnect()处理从存储中删除会话的逻辑。
  5.   

    注意:标签刷新始终创建新会话,因为刷新意味着打开   当前标签本身中的新标签