3

我需要防止出现以下情况: 1. 同一个用户帐户存在两个不同的 JSESSIONID,或者 2. 单个浏览器的两个选项卡引用相同的 JSESSIONID。

有什么建议么?如果检测到现有会话,用户可以: a) 退出第二次尝试 b) 终止现有会话(刺客!)并开始新会话。

首选是服务器端解决方案。也就是说,我不想依赖用户关闭 cookie 来强制 JSESSIONID 进入 URL。

4

2 回答 2

1

在每个页面中嵌入一个带有唯一标记的隐藏input字段听起来像是此类问题的唯一解决方案。这似乎是区分一个标签与另一个标签的唯一方法,即使它们是完全相同的 URL。

但请记住,您正在做的事情似乎是非常糟糕的做法。阻止用户使用多个选项卡的任何特殊原因?

于 2012-07-09T20:34:49.760 回答
0

第 1 部分可以使用单例模式来完成,该模式根据用户 SID 的映射检查用户的当前 sessionid。

第 2 部分,可以在事务性 webapps 中理解,您需要确保用户读取正确的信息(而不是一个带有旧值的选项卡和一个带有新值的选项卡 - 场景)......它可以使用相同的 sessionid映射,将其注入 dom 并使用 javascript 验证它。

编辑。第 2 部分验证可以在针对 client-sessionid 映射的过滤器中做得更好。并且对象的正确定义保证了真正唯一的单例实例存在。

于 2012-07-09T20:53:32.453 回答