Asp.net mvc 4 如何在方法级别重写“ValidateAntiForgeryToken”?
我在类级别应用了Asp.net mvc 4 如何在方法级别重写“ValidateAntiForgeryToken”?,asp.net-mvc-4,antiforgerytoken,Asp.net Mvc 4,Antiforgerytoken,我在类级别应用了ValidateAntiForgeryToken属性。如下面代码所示 [ValidateAntiForgeryToken, Authorize(Roles = "SuperUser")] public class ManageController : BaseController { ... } 这个类有几个方法接受POST数据,还有几个方法公开用于GET操作。我想为GET方法禁用ValidateAntiForgeryToken,而不更改类级属性。我知道我可以通过更改所有POS
ValidateAntiForgeryToken
属性。如下面代码所示
[ValidateAntiForgeryToken, Authorize(Roles = "SuperUser")]
public class ManageController : BaseController
{
...
}
这个类有几个方法接受POST
数据,还有几个方法公开用于GET
操作。我想为GET
方法禁用ValidateAntiForgeryToken
,而不更改类级属性。我知道我可以通过更改所有POST
方法并仅对它们应用ValidateAntiForgeryToken
来实现这一点。但我希望他们的方法很简单
就像Authorize
属性与AllowAnonymous
一起工作一样,您可以在类级别应用Authorize
属性,但随后可以通过应用AllowAnonymous
在方法级别更改它
[Authorize]
public class AccountController : BaseController
{
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
return View();
}
}
我想这篇文章会对你有所帮助。 通过添加自定义IAuthorizationFilter,您可以跳过检查获取
public class AntiForgeryAttribute: IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext authorizationContext)
{
if (authorizationContext.RequestContext.HttpContext.Request.HttpMethod != "POST")
return;
new ValidateAntiForgeryTokenAttribute().OnAuthorization(authorizationContext);
}
}
或者在文章的后面,它解释了如何创建一个自定义属性来跳过验证某些操作。看看这个链接,基本上你可以创建一个过滤器,将过滤器添加到类中,然后过滤器会将ValidateAntiForgeryToken添加到post方法中。欢迎使用stackoverflow。请详细描述答案。当你的答案中有一个链接时,很可能该页面被删除,你的答案在将来对其他人毫无用处,这可能是因为我没有正确地阅读文章,并且犯了错误。我已经上传了代码,你能看一下吗?我还尝试使用基类。