我们有一个用 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__
.
问题:这两个不应该是相同的,所以我可以使用以下代码段来获取 cookie?
var cookie = filterContext.HttpContext.Request.Cookies[AntiForgeryConfig.CookieName];