当用户注销时,我想清除所有历史记录和缓存。这样用户就无法返回页面。
出于这些目的,我在login.aspx页面上使用以下: -
if (Request.QueryString["action"] == "logout")
{
FormsAuthentication.SignOut();
Session["CurrentUser"] = null;
Session["IsJobPoster"] = null;
Session["AdminEmail"] = null;
Session["IsAdmin"] = null;
Response.Buffer = true;
Response.ExpiresAbsolute = DateTime.UtcNow.AddDays(-1d);
Response.Expires = -1500;
Response.CacheControl = "no-cache";
}
但是用户可以在退出后返回页面。
请建议我使用可用的链接或示例代码。
答案 0 :(得分:1)
另外,您是否有理由不使用Session.Abandon()?您应该考虑这一点,特别是如果您获得更多的会话变量,它将更容易维护。
答案 1 :(得分:0)
不确定.Net,但是,通常使用POST并使页面到期(通过适当的响应标头)并使用HTTP重定向应该删除历史记录。另外,如果使用cookie来维护会话,那么用一些垃圾覆盖cookie也会有所帮助。
答案 2 :(得分:0)
我猜你正在看到页面的客户端缓存版本。
将缓存调用(Expires,CacheControl)移到if语句之外。您希望它们在每个请求中执行,以便需要登录的页面不会被缓存在客户端。然后,当回到历史记录中时,浏览器将通知用户该页面无效/旧/过时并需要刷新。这将启动一个新请求,该请求应将用户重定向到登录页面。
答案 3 :(得分:0)
用户在注销后能够看到的上一页肯定是客户端中缓存的页面。所以你要做的就是编写这样的代码(从你的代码中复制):
Response.ExpiresAbsolute = DateTime.UtcNow.AddDays(-1d);
Response.Expires = -1500;
Response.CacheControl = "no-cache";
在登录用户看到的页面中,以便这些页面不会在浏览器中缓存。有意义吗?