0

私はasp.netMVC3にWebサイトを持っていますが、偽造防止トークンをいくつか入れただけですが、フォームの1つ(他のフォームではない)でこの例外が発生する理由がわかりません。

A required anti-forgery token was not supplied or was invalid.

私のhtmlコードには、次のトークンがあるようです。

    <input name="__RequestVerificationToken" 
type="hidden" value="0Ll0Io/fX0dR5HXCAroCKTKCBqNn2tmwgcqgYGjln8WVdWOPF2VQEen4wd2UKso1lpIstniXWjdgEE6m0ADgfRhIP25K12Y/ll+PFaYzoQgFAqSfL4XqNYKMrzvAKqmuqXnh3lwBFCYcDXKxRshKVefYelNfWgdFMtf8Ru/dT4qzWw9vU4KQS8eliglpzN9jXu5fekpBOsQGzOhoFHI3Ow==" 
disabled="disabled">

この無効な属性を取得するのはなぜですか?

これが私のコードの一部です:

@using (Html.BeginForm("XXX", "YYY", FormMethod.Post))
{
@Html.AntiForgeryToken()
...
}

およびコントローラー:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult XXX(SessionStore sessionStore, CurrentModel model)

私はグーグルで無効になっているものを見つけることができません:/(

4

1 に答える 1

3

非表示フィールドを生成するコードは次のとおりです。

public HtmlString GetHtml(HttpContextBase httpContext, string salt, string domain, string path)
{
    string str = this.GetAntiForgeryTokenAndSetCookie(httpContext, salt, domain, path);
    string antiForgeryTokenName = AntiForgeryData.GetAntiForgeryTokenName(null);
    TagBuilder builder = new TagBuilder("input");
    builder.Attributes["type"] = "hidden";
    builder.Attributes["name"] = antiForgeryTokenName;
    builder.Attributes["value"] = str;
    return new HtmlString(builder.ToString(TagRenderMode.SelfClosing));
}

ご覧のとおり、disabled属性の痕跡はありません。

したがって、あなたが説明している状況は、次の場合を除いて発生することはありません。

  1. カスタムビルドのヘルパーまたはカスタムビルドのASP.NETMVCを使用しています
  2. この属性を追加するためにJavaScriptを使用しました
于 2012-05-02T07:38:55.580 に答える