2

我正在开发一个asp.net网站&我没有使用asp.net的内置身份验证控件。“返回” - 浏览器不能进入前一页 - 退出后

我已经为网站的用户手动创建了表。

我要的是如下

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

请通知我是否它是重复问题。

在此先感谢您的帮助。

萨加尔。

回答

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

你可以把这个代码在所有的认证页面,从而防止它们在客户端浏览器上缓存。

+0

是的。正确和短的解决方案。很棒的一个。你很优秀” – 2009-12-26 18:13:12

1

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

所以你不能让这个工作100%的时间,但你总是要面对一个问题,一个用户可以轻松地截图,打印出一个页面,在他们的磁盘上保存一份副本等等,无论如何,一旦你已经给他们一个页面...

1

你的答案问题是:

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

  • 的现在,当用户按下“返回”浏览器的按钮,它不能返回上一页 //添加以下代码到你的代码的页面

    保护覆盖无效的OnPreRender(EventArgs的五)

    的背后

    {

    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

相关问题