退出后,后退按钮不得转到上一页

时间:2009-12-26 17:35:23

标签: asp.net authentication forms-authentication http-authentication

我正在开发一个asp.net网站,我没有使用asp.net的内置身份验证控件。我为网站用户创建了手动表。

我想要的是如下

  • 登录后,用户可以访问页面(已经完成)
  • 当用户按下退出(用户转到特定页面 - 示例 - default.aspx)
  • 现在当用户按下浏览器的“后退”按钮时,它不能转到上一页(在雅虎页面中完成 - 我想实现相同的)

3 个答案:

答案 0 :(得分:2)

要防止用户在按下后退按钮时看到上一页,您需要指示浏览器不要缓存此页面:

Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
Response.Cache.SetValidUntilExpires(false);
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();

您可以将此代码放在所有经过身份验证的页面中,从而防止它们在客户端浏览器上缓存。

答案 1 :(得分:1)

对于不被缓存的页面,浏览器需要对缓存指令做出适当的响应,但不能保证这对每个浏览器都有效! (一个适当的邪恶的人可以编写自己的浏览器来忽略缓存信息,或写一个代理来剥离它...)

所以你无法让它在100%的时间内正常工作,但你总是要面对用户可以轻松截取屏幕截图,打印页面,在磁盘上保存副本等问题。一旦你给他们喂了一页......

答案 2 :(得分:1)

你的答案是:

  • 当用户按下退出时。 (用户转到特定页面 - 示例 - default.aspx) 您可以添加LinkBut​​ton作为Signout链接,并在您可以编写的click事件处理程序中添加 的Response.Redirect( “Default.aspx的”);

  • for now当用户按下浏览器的“后退”按钮时不能转到上一页 //将以下代码添加到页面后面的代码中

    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);
    

    }

请参阅csharpdotnetfreak.blogspot.com

相关问题