を使用する ASP.NET MVC 3 で記述されたアプリがあります@Html.AntiForgeryToken()
。
カスタム属性でトークンを検証します (デフォルト属性を指定する必要はありません[ValidateAntiForgeryToken]
)。これは非常に簡単なはずですが、興味深い矛盾を発見しました。
以下のすべてのコードは、次のメソッド内で実行されています。
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = false, Inherited = true)] public class ValidateJsonAntiForgeryTokenAttribute : FilterAttribute, IAuthorizationFilter { public void OnAuthorization(AuthorizationContext filterContext) { ...
AntiForgeryConfig.CookieName
値は__RequestVerificationToken
。それは理にかなっているようです。filterContext.HttpContext.Request.Cookies
には 1 つの Cookie が含まれていますが、その名前は__RequestVerificationToken_Lw__
.
質問:これら 2 つは同じではないはずなので、次のスニペットを使用して Cookie を取得できますか?
var cookie = filterContext.HttpContext.Request.Cookies[AntiForgeryConfig.CookieName];