我找到了解决办法。
我在ASP.NET
C#
. Master Page
除了页面之外,我对网站的所有页面都有一个Login
。在Master Page
服务器中Page Load event
,我得到了Url
引用页面并检查它是否包含站点的根目录,如果不是,我重定向到该Login
页面,因为它没有Master Page
显示。
如果我尝试从另一个站点访问页面,或者如果我输入Url
浏览器的地址框,这将起作用。因此,如果您关闭选项卡并尝试从另一个选项卡重新进入或重新打开选项卡,即使 cookie 没有被杀死,您也无法在不通过 thru 的情况下重新进入该站点Login
。即使您没有关闭选项卡并在同一选项卡中的不同站点之间导航,这也有效。
这是代码
if (Request.UrlReferrer == null || !Request.UrlReferrer.AbsoluteUri.ToString().Contains("root"))
{
Response.Redirect("~/Account/Login.aspx");
}
从站点内导航时,即使您打开指向站点中另一个页面的链接到它打开的另一个选项卡,也没有问题。
如果您还想确保可以在重定向到页面if
之前终止该子句中的会话和身份验证 cookie。Login
当用户导航到同一选项卡中的另一个站点并按下浏览器back to
按钮时,这将不起作用,因为这适用于缓存并且不会自动向服务器发送请求。
因此,这不会在关闭选项卡时终止会话或身份验证 cookie,但它可以帮助防止在关闭选项卡后重新进入站点而不登录。