使用x关闭选项卡后,如何在不登录的情况下阻止返回我的站点?

时间:2012-04-03 12:46:54

标签: c# asp.net forms-authentication

我的网站上有一个触发

的注销按钮
FormsAuthentication.SignOut()

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

3 个答案:

答案 0 :(得分:1)

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

浏览器会话(事实上,在浏览器关闭时删除会话ID的cookie)仅在浏览器关闭时结束。这就是为什么在不关闭整个浏览器的情况下仅关闭一个选项卡时不会注销的原因。

当他只关闭标签时,没有理由退出用户。这种行为在网络上不是标准的,如果你这样做,用户可能会迷失方向。

但是没关系,如果你想这样做,你可以编写一些javascript来删除弹出窗口以警告用户他必须在离开前退出。为此,请使用unload或onbeforeunload事件。

看这里看例子: How to create popup window when browser close

答案 1 :(得分:0)

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

答案 2 :(得分:0)

等等,用户在您的网站上打开了两个标签,然后单击其中的“注销”,而不是另一个?那么,他们还没有真正退出 - 会话仍然有效。我知道这可能是一个问题。但它不是安全问题,只是仍然登录的用户。

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

可能有点矫枉过正,但它都是服务器端,你不需要Javascript就可以了。