如何禁用浏览器关闭按钮以防止Web应用程序被关闭?

3
我有一个基于ASP.Net Framework 1.0的Web应用程序,为了安全起见,我希望在浏览器(ie、firefox、opera等)中禁用关闭按钮(X),以防止任何东西使浏览器退出,用户只能通过我的菜单注销退出浏览器。
请帮助我。
提前感谢。
敬礼, Yusan Susandi。

8
顺便问一下,你是否想要防止用户拔掉交流插头? - Vlad
为什么要踩?这是一个完全合理的问题,而且表述清晰。 - T.J. Crowder
1个回答

9
抱歉,您无法做到这一点。您需要实现一种服务器端的超时机制等。您可以设置相对较短的超时时间并在幕后使用ajax请求来保持会话活动,但无法防止浏览器关闭。
而且,您真的不想依赖此方法,因为浏览器可能会崩溃而不是关闭,计算机可能会突然断电而无法正常关闭等,所有这些情况都没有通知到您的服务器。因此,您必须处理人们可能会突然消失的事实。
对于正常使用情况,您可以使用JavaScript“鼓励”用户使用注销链接。
<script>
window.onbeforeunload = function() {
    if (loggedIn) {
        return "Please cancel and use the Logout link instead";
    }
};
</script>

...这将在大多数(但不是所有)浏览器上提醒他们,但你不能强制他们这样做。


1
即使您可以这样做,这也是一个非常糟糕的想法,因为您实际上将网站的“安全性”留给了浏览器的实现。 - Daniel Powell
@Daniel:是的,还要看看我的第二段话——不仅仅是浏览器的实现,人们还可能会绊倒电源线,当然浏览器也可能会崩溃而不是正常关闭。 :-) - T.J. Crowder
如果我重定向到其他页面,这个通知总是会显示,因为我的Web应用程序没有主页,所以还有其他方法吗?请帮帮我...谢谢。 - Yusan Susandi
@Yusan:你只需要在导航代码中处理它,例如设置一个变量来抑制消息。如果你真的认为这个消息很有价值;如果你的超时机制正常工作,并且你训练人们退出登录,那么你真的需要催促吗?我的意思是,用户也可以在登录时站起来离开电脑。这也是一个安全问题,除了用户培训外,无法克服(尽管有一些系统使用面部识别来锁定工作站,如果人员离开,这是在操作系统级别上实现的)。 - T.J. Crowder
我明白你所指的,但我需要更详细的代码解释,谢谢TJ Crowder先生。 - Yusan Susandi
@Yusan:你将这段代码放在页面上。这是客户端代码。在我使用简单变量loggedIn的位置,你需要根据需要设置相应的测试条件来判断用户是否已登录。你还可以设置一个变量,用于标识通过click事件处理程序或类似方式导航离开页面的情况,以免在这种情况下打扰用户。基本就是这样,非常直接。 - T.J. Crowder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接