Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net “后退”按钮在注销后不得转到上一页_Asp.net_Authentication_Forms Authentication_Http Authentication - Fatal编程技术网

Asp.net “后退”按钮在注销后不得转到上一页

Asp.net “后退”按钮在注销后不得转到上一页,asp.net,authentication,forms-authentication,http-authentication,Asp.net,Authentication,Forms Authentication,Http Authentication,我正在开发一个asp.net网站,我没有使用asp.net的内置身份验证控件。我已经为站点的用户手动创建了表 我想要的是 登录后,用户可以访问页面(已完成) 当用户按“注销”时(用户转到特定页面-示例-default.aspx) 现在,当用户按下浏览器的“后退”按钮时,它不能转到上一页(这是在雅虎页面中完成的-我想实现相同的功能) 要防止用户在按下后退按钮时看到上一页,您需要指示浏览器不要缓存此页: Response.Cache.SetExpires(DateTime.UtcNow.AddDa

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

我想要的是

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

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

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

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

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


因此,你不能让它在100%的时间内正常工作,但你总是要面对这样一个问题:用户可以轻松地拍摄屏幕截图、打印页面、将副本保存在他们的磁盘上等等。一旦你向他们提供了一个页面……

你的问题的答案是:

  • 当用户按“注销”时显示。(用户转到特定页面-示例-default.aspx) 您可以添加一个LinkButton作为注销链接,并在click事件处理程序中编写 重定向(“Default.aspx”)

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

    受保护的覆盖无效OnPreRender(EventArgs e)

    {

    base.OnPreRender(e);
    字符串strIDisableback按钮;
    strDisAbleBackButton=“\n”;
    strDisAbleBackButton+=“window.history.forward(1);\n”;
    STRIDisableBackButton+=“\n”;
    RegisterClientScriptBlock(this.Page.GetType(),“ClientScript”,strDisAbleBackButton);
    
    }


请参阅csharpdotnetfreak.blogspot.com

yep。正确且简短的解决方案。很好。你“棒极了”
 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);