[.NET MVC] ASP.NET MVCブラウザキャッシュ:ブラウザ後退ボタンがActionに入らない

924 ワード

シーン:サイトlogout後、ブラウザの戻るボタンをクリックすると、前のページのActionで権限制御が行われていても、前のページに戻ります.
理由:戻るボタンはブラウザでキャッシュされたコンテンツを使用し、新しいHttpリクエストは生成されません.
解決策:(1)新しいMainController継承Controllerを作成し、OnActionExecutedメソッドを上書きします.OnActionExecutedでブラウザキャッシュをクリアします.
public class MainController : Controller
{
    protected override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        Response.Buffer = true;
        Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
        Response.Cache.SetExpires(DateTime.Now.AddDays(-1));
        Response.Expires = 0;
        Response.CacheControl = "no-cache";
        Response.Cache.SetNoStore();

        base.OnActionExecuted(filterContext);
    }
}
(2)サイト内の他のControllerは,このMainControllerを継承する.
public class AccountController : Controller
{
    //...
}