0

を使用する ASP.NET MVC 3 で記述されたアプリがあります@Html.AntiForgeryToken()

カスタム属性でトークンを検証します (デフォルト属性を指定する必要はありません[ValidateAntiForgeryToken])。これは非常に簡単なはずですが、興味深い矛盾を発見しました。

  1. 以下のすべてのコードは、次のメソッド内で実行されています。

    [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
    public class ValidateJsonAntiForgeryTokenAttribute : FilterAttribute, IAuthorizationFilter
    {  
        public void OnAuthorization(AuthorizationContext filterContext)
        {
        ...
    
  2. AntiForgeryConfig.CookieName値は__RequestVerificationToken。それは理にかなっているようです。

  3. filterContext.HttpContext.Request.Cookiesには 1 つの Cookie が含まれていますが、その名前は__RequestVerificationToken_Lw__.

質問:これら 2 つは同じではないはずなので、次のスニペットを使用して Cookie を取得できますか?

var cookie = filterContext.HttpContext.Request.Cookies[AntiForgeryConfig.CookieName];
4

1 に答える 1

2

デフォルトのCookie名はMVC3とMVC4の間で変更されました。MVC3では、デフォルトのCookie名に「Lw」と末尾に余分なアンダースコアが含まれています。CookieがMVC3アプリケーションではなくMVC4アプリケーションによって生成されていることを確認できますか?

于 2012-10-12T03:09:32.217 に答える