使用x关闭选项卡后,如何防止在未登录的情况下返回我的网站

本文关键字:登录 情况下 网站 我的 返回 何防止 选项 使用 | 更新日期: 2023-09-27 18:29:47

我的网站上有一个注销按钮,可以触发

FormsAuthentication.SignOut()

即使使用浏览器上的后退按钮或复制/粘贴URL,也需要再次登录。但是,如果通过浏览器的x按钮关闭选项卡,而另一个选项卡仍然打开,如果他们复制/粘贴URL,页面将在不登录的情况下重新打开。这是一个严重的安全问题。如果浏览器通过关闭所有选项卡完全关闭,则不会发生这种情况。即使浏览器尚未完全关闭,我如何防止在关闭选项卡后返回URL?有没有一种方法可以捕获将触发FormsAuthentication.SignOut()的javascript OnClose事件?我在asp.net c#工作。

使用x关闭选项卡后,如何防止在未登录的情况下返回我的网站

这是一个浏览器会话问题。

浏览器会话(实际上,当浏览器关闭时,保存会话id的cookie会被删除)只有在浏览器关闭时才会结束。这就是为什么当你只关闭一个选项卡而没有关闭整个浏览器时,你不会注销。

当用户只关闭一个选项卡时,没有理由注销他。这种行为在网络上不是标准的,如果你这样做,用户可能会迷失方向。

但别介意,如果你想这样做,你可以写一些javascript,它会弹出一个弹出窗口,警告用户在离开之前必须注销。要执行此操作,请使用unload或onbeforeunload事件。

查看以下示例:如何在浏览器关闭时创建弹出窗口

您可以在窗口onbeforeunload事件上使用javascript来调用您的网站并注销用户。

等等,用户在您的网站上打开了两个选项卡,他们在其中一个选项卡中单击"注销",但在另一个选项卡上没有?那么,他们还没有真正注销——会话仍然处于活动状态。我明白这怎么会成为一个问题。但这不是安全问题,只是同一个用户仍然登录

无论如何,您可以创建一个新的会话变量,例如,每当用户登录时,您都可以用一个值填充该变量,当用户注销时,您可以删除该变量。然后在每个Page_Load中,检查这个变量,如果不存在,则重定向到登录页面。

这可能有点过头了,但这都是服务器端的,你不需要Javascript来完成。