我有多页应用程序,我需要检查用户是否在其他浏览器选项卡或其他浏览器窗口(IE8)中打开应用程序并避免这种情况(在打开的新窗口/选项卡中注销用户)
我使用JSP,JavaScript和jQuery
如果真的 - 不要使用sessionStorage
EDITED 我还使用iframe和IE8模态对话框。
答案 0 :(得分:0)
您需要使用SignalR等技术来保持连接畅通。然后,您需要ping连接以查看该用户是否已连接并关闭其现有连接。如果该实现太令人生畏,您可以向调用登录表(或这些事件的任何存储设备)的应用程序/页面添加一个计时器循环,如果有新的登录,则调用它自己的注销过程。
答案 1 :(得分:0)
一种方法是在应用程序范围内维护存储username vs session-id
的映射(在内存中或基于用户计数的db中)。每次登录时,如果session
已存在username
,则您在此地图中查找。如果存在,则使现有会话无效,否则将新session-id
存储在地图中。 [未经测试]
答案 2 :(得分:0)
您可以将用户会话ID或随机生成的id传递给global / window变量,即;
window.state = 'SomeLoginIdString';
将状态保存在客户端页面可以轻松访问的其他变量中,最好是客户端上的数据存储区。
var loginAccessCurrentState = 'SomeLoginIdString';
当使用open / switch页面比较两者时,如果为false,则可以重定向到404页面。
loginAccessCurrentState === window.state
这个想法是你只在登录会话期间传递状态,如果用户打开一个新选项卡,默认情况下状态是未定义的。
答案 3 :(得分:0)
对于单页面应用程序,以下方法可能是一个简单的解决方案: