ユーザーがログアウト後に戻るボタンを押すと、Document Expired が表示されます。ただし、ユーザーがこのメッセージをクリックすると
[再試行] をクリックして、Web サイトからドキュメントを再リクエストします。
ブラウザでは、認証されたページに再びアクセスできます。
ユーザーがログアウト後に戻るボタンを押すと、Document Expired が表示されます。ただし、ユーザーがこのメッセージをクリックすると
[再試行] をクリックして、Web サイトからドキュメントを再リクエストします。
ブラウザでは、認証されたページに再びアクセスできます。
ページがキャッシュされているためです。すべての安全なリクエストについて、キャッシュを手動で削除する必要があります。次のようなことができます。
public class SecurePageAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
filterContext.HttpContext.Response.Cache.SetNoStore();
}
}
次に、コントローラーで次のように使用します。
[SecurePage]
public ActionResult Index() {
return View();
}
サイトの大部分が安全な場合は、コントローラー全体に注釈を付けたり、これをグローバルに登録したりすることもできます。
GET リクエストの場合、認証されたページが「戻る」に表示されることは期待できますが、それを操作することはできません (アクションに POST を使用すると仮定します)。
ただし、POST リクエストについて話しているので (期限切れのメッセージが表示されるため) [Authorize]
、認証されていないユーザーがアクセスできるようにするコントローラー/アクションの属性が欠落している可能性があります。これを確認しましたか?