3

非常に単純な送信フォーム用に、新しい asp.net Web フォーム (マスター ページ付き) アプリケーションを作成しました。Visual Studio 2012 を使用して Web プロジェクトを作成し、site.master.cs にクロス サイト スクリプトの偽造を防止するためのコードを追加しました。

ただし、テスト時に、ユーザーが署名して数分間非アクティブになり、ログアウト ボタンをクリックすると、このエラーが発生します (site.master.cs で)。

Validation of Anti-XSRF token failed.

       Exception Details: System.InvalidOperationException: Validation of Anti-XSRF token failed.

Source Error: 
Line 61:                     || (string)ViewState[AntiXsrfUserNameKey] !=    

  (Context.User.Identity.Name ?? String.Empty))

 Line 62:                 {

 Line 63:                     throw new InvalidOperationException("Validation of Anti-XSRF token failed.");


   Line 64:                 }

 Line 65:             }

これを避けるために何ができるでしょうか?

4

1 に答える 1

1

それは完全にあなた次第です。好きなようにエラーを処理してください。あなたの場合、Web サーバーを再起動してビューステートが停止したか、意図的にこれを実行しなかった可能性があります。

Owinを使用していますか?Owin を使用している場合、Session と Viewstate を台無しにするバグがあります。ユーザーを認証する前に、Session["Blah"] = test などのセッション変数 (何でも) を作成します。

エラーを処理するコードを追加するだけです (ユーザーを別のページにリダイレクトします)。

于 2014-02-08T04:55:03.327 に答える