2

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

我想要的是如下

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

3 回答 3

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

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

于 2009-12-26T17:45:01.353 回答
1

对于不被缓存的页面,浏览器需要适当地响应缓存指令,但不能保证这将适用于每个浏览器!(一个适当的邪恶的人可以编写他们自己的浏览器来忽略缓存信息,或者编写一个代理来删除它......)

所以你不能让它在 100% 的时间内工作,但你总是会遇到这样一个问题,即用户可以轻松地截取屏幕截图、打印页面、在磁盘上保存副本等。反正已经给他们一页了……

于 2009-12-26T17:56:10.287 回答
1

你的问题的答案是:

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

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

    受保护的覆盖无效 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

于 2009-12-27T10:24:20.147 回答