我想实现this solution来处理ajax请求中的防伪。我知道还有其他解决方案,但这是我最喜欢的解决方案。
问题是我必须处理System.Web.Webpages 1.0,所以我不能在我的代码中使用AntiForgeryConfig.CookieName。
public override void OnAuthorization(AuthorizationContext filterContext)
{
var request = filterContext.HttpContext.Request;
// Only validate POSTs
if (request.HttpMethod == WebRequestMethods.Http.Post)
{
// Ajax POSTs and normal form posts have to be treated differently when it comes
// to validating the AntiForgeryToken
if (request.IsAjaxRequest())
{
string cookieName = AntiForgeryData.GetAntiForgeryTokenName(context.Request.ApplicationPath);
var antiForgeryCookie = request.Cookies[AntiForgeryConfig.CookieName];
var cookieValue = antiForgeryCookie != null
? antiForgeryCookie.Value
: null;
AntiForgery.Validate(cookieValue, request.Headers["__RequestVerificationToken"]);
}
else
{
new ValidateAntiForgeryTokenAttribute()
.OnAuthorization(filterContext);
}
}
}
如何检索(以编程方式)Mvc3中防伪系统设置的cookie名称?我怀疑AntiForgery.Validate部分也是一个问题,但我之前会处理它。有什么想法吗?
答案 0 :(得分:0)
实际的Cookie名称始终从public void method() {
while(count < 10000000) {
AnimalBean animal = new WeakReference<AnimalBean>(new AnimalBean()).get();
//----------- HERE MY LOGIC -------------
}
}
开始,带有一些后缀。所以你可以找到这样的cookie:
"__RequestVerificationToken"