防止浏览器后退按钮重定向到asp.net mvc2中的上一页

时间:2013-04-13 13:25:46

标签: asp.net asp.net-mvc-2

我使用以下文章创建了一个在asp.net mvc2应用程序中显示Session expire警告消息的POC。 http://www.fairwaytech.com/2012/01/handling-session-timeout-gracefully/

我在代码中做了一处更改,如下所述:

在endSession方法中的

location.href = expireSessionUrl;代码如下:

window.location.replace(expireSessionUrl);

一旦用户点击Session警告消息对话框中的Log Out按钮,他就会导航到LogOut视图。但是如果他点击浏览器后退按钮,他就会导航到上一页。

如上所述,我有以下修改过的Expire方法:

[Authorize]
public virtual ActionResult Expire()
{
Session.Clear();
FormsService.SignOut();
HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
HttpContext.Response.Cache.SetValidUntilExpires(false);
HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Response.Cache.SetNoStore();
return Redirect(“/”);
}

请指导我解决问题。

先谢谢 Santosh Kumar Patro

1 个答案:

答案 0 :(得分:0)

您需要让缓存过期,请尝试以下操作:

Page.Response.Cache.SetCacheability(HttpCacheability.NoCache)

或来自docs

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(true);

或者您可以使用Response.CacheControl来控制页面在用户缓存中的存储方式