1

ユーザーがログアウト後に戻るボタンを押すと、Document Expired が表示されます。ただし、ユーザーがこのメッセージをクリックすると

[再試行] をクリックして、Web サイトからドキュメントを再リクエストします。

ブラウザでは、認証されたページに再びアクセスできます。

4

2 に答える 2

2

ページがキャッシュされているためです。すべての安全なリクエストについて、キャッシュを手動で削除する必要があります。次のようなことができます。

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

サイトの大部分が安全な場合は、コントローラー全体に注釈を付けたり、これをグローバルに登録したりすることもできます。

于 2013-02-09T00:18:34.667 に答える
1

GET リクエストの場合、認証されたページが「戻る」に表示されることは期待できますが、それを操作することはできません (アクションに POST を使用すると仮定します)。

ただし、POST リクエストについて話しているので (期限切れのメッセージが表示されるため) [Authorize]、認証されていないユーザーがアクセスできるようにするコントローラー/アクションの属性が欠落している可能性があります。これを確認しましたか?

于 2013-02-08T23:37:17.383 に答える