0

我正在尝试删除特定站点的历史记录。当我注销页面然后按后退按钮时,页面会移到上一页,但是我希望当任何用户注销然后按后退按钮时,它将位于登录页面不在上一页的同一页面上。我正在尝试所有方法,例如会话放弃,缓存删除,但我的问题没有解决。我们也可以使用 JavaScript。

protected void btnLogout_Click(object sender, EventArgs e)
{
    HttpContext.Current.Cache.Remove("");
    HttpContext.Current.Session.Clear();
    HttpContext.Current.Session.Abandon();
    Response.Redirect("../Login.aspx");
} 
4

6 回答 6

1

您可以尝试使用 javascript:

 <script type="text/javascript">
    //Logout clears all visited pages for Back Button
    function noBack() { window.history.forward(); }
    noBack();
    window.onload = noBack;
    window.onpageshow = function (evt) { if (evt.persisted) noBack(); }
    window.onunload = function () { void (0); }
</script>
于 2013-08-26T13:05:13.153 回答
0

从我所见,您似乎正在处理通过会话变量登录的人。如果是这种情况,那么在母版页或基本页中,您不能通过检查某个会话变量的存在来确保该人已登录吗?如果他们已登录,请照常继续,如果没有,那么您可以将他们重定向回登录页面(或默认)以使他们登录?

于 2013-08-26T15:36:46.943 回答
0

在后面的代码中添加以下代码

protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);
        string strDisAbleBackButton;
        strDisAbleBackButton = "<script language=\"javascript\">\n";
        strDisAbleBackButton += "window.history.forward(1);\n";
        strDisAbleBackButton += "\n</script>";
        ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "clientScript", strDisAbleBackButton);
    }
    protected void Page_Init(object Sender, EventArgs e)
    {
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1));
        Response.Cache.SetNoStore();
    }

希望上面的代码对你有用。

于 2013-08-27T12:01:42.823 回答
0

如果页面是使用缓存提供的,那么请执行以下操作来设置正确的 http 标头

HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
HttpContext.Current.Response.Cache.SetValidUntilExpires(false);
HttpContext.Current.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Current.Response.Cache.SetNoStore();
于 2013-08-26T12:54:22.117 回答
0

你有两个选择:

防止页面被缓存 防止用户在使用 JavaScript 注销后返回上一页。

我会建议第一个,但如果它不适合你,请选择这里提到的第二个选项

于 2013-08-26T13:03:42.470 回答
-1

这个问题已经在堆栈溢出中被问过好几次了。一个简单的搜索会给你一个解决方案。注销后,您必须禁用后退按钮。为此您必须使用

Page.Response.Cache.SetCacheability(HttpCacheability.NoCache)

删除缓存本身将停止向后导航。

于 2013-08-26T11:36:29.590 回答