如何使用java和javascript限制用户仅在一个选项卡/窗口中登录
How to restrict a user to login in only one tab/window using java and javascript?
我的要求是为每个用户提供一次登录的访问权限,为此,我在用户登录时将登录状态更新为真,在用户注销时将登录状态更新为真。但问题是当用户关闭窗口而不注销时。
为了处理窗口关闭,我实现了以下js代码
var validNavigation = false;
function wireUpEvents() {
var dont_confirm_leave = 0;
var leave_message = 'You sure you want to leave?'
function goodbye(e) {
if (!validNavigation) {
if (dont_confirm_leave!==1) {
if(!e) e = window.event;
//e.cancelBubble is supported by IE - this will kill the bubbling process.
e.cancelBubble = true;
e.returnValue = leave_message;
//e.stopPropagation works in Firefox.
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
}
//return works for Chrome and Safari
return leave_message;
}
window.location = "logout.jsp";
}
}
window.onbeforeunload=goodbye;
// Attach the event keypress to exclude the F5 refresh
$(document).bind('keypress', function(e) {
if (e.keyCode == 116){
validNavigation = true;
}
});
// Attach the event click for all links in the page
$("a").bind("click", function() {
validNavigation = true;
});
// Attach the event submit for all forms in the page
$("form").bind("submit", function() {
validNavigation = true;
});
// Attach the event click for all inputs in the page
$("input[type=submit]").bind("click", function() {
validNavigation = true;
});
// Attach the event click for all inputs in the page
$("input[type='button']").bind("click", function() {
validNavigation = true;
});
}
// Wire up the events as soon as the DOM tree is ready
$(document).ready(function() {
wireUpEvents();
});
在这里它适用于窗口关闭,这意味着如果用户关闭窗口,它会转到注销页面,但问题是当用户重新加载页面时它会注销页面。
所以我需要绑定重新加载事件,就像上面的 js 代码一样,用于 f5、提交和锚标签。
请在这方面帮助我。
提前致谢...
我想
到了两件事:
首先,用户已登录的事实并不意味着有任何活动正在进行,有些人在浏览器运行的情况下打开了PC。
其次,即使用户关闭了一个页面,也不一定意味着他/她想要注销,如果用户使用两个选项卡在您的网站上导航,则尤其如此。
因此,与其尝试检查他们何时关闭选项卡,我建议考虑仅在他们从其他地方登录时才将它们注销和/或设置一个计时器,在一定程度的不活动后自动注销它们的想法。
相关文章:
- 按照选项卡索引的顺序循环一个jQuery选择
- 无法在Ionic select中预先选择最后一个选项
- 一次又一次地在新的和相同的选项卡中打开一个url
- 如果类不是一个选项,如何在使用 jQuery 时控制(避免)嵌套 html 元素的样式
- AngularJS ng选项在选择一个选项后删除了默认的空白值
- 如何为下拉列表的每个选项添加一个属性
- 在下拉列表中选择一个选项的值
- PayPal按钮是否有一个简单的选项,其中金额基于一些用户输入
- 创建了一个选项卡,但点击时不会起作用-jQuery issue/newbie
- 如何通过Primefaces3.5使用JSF2.0验证并在成功的情况下打开一个新的选项卡
- HTML-从mysql生成的选择框中的一个选项更改文本区域的颜色
- 打开一个选项卡,并在firefox网络扩展中向其发出POST请求
- 我如何为列出的选项卡元素编写一个Protractor测试,它会检查它是否's是否处于活动状态
- HTML-使用mysql.php生成一个选择框.我怎样才能更改“;值“;生成的选择框选项的
- 给出<选项>标记一个类?API调用不工作
- 链接到手风琴中的另一个选项卡,嵌入的链接将不起作用
- 如何将数组附加到下拉导航栏并禁用其中的一个选项
- 如何打开一个新窗口或选项卡,并将其提供给javascript执行
- 尝试添加一个选项以使用append进行选择,但没有任何结果
- 多个选择选项一个依赖于另一个