我在班级应用ValidateAntiForgeryToken
属性。如下面的代码所示。
[ValidateAntiForgeryToken, Authorize(Roles = "SuperUser")]
public class ManageController : BaseController
{
...
}
这个类有几个接受POST
数据的方法和几个为GET
操作公开的方法。我想为ValidateAntiForgeryToken
方法禁用GET
,而不更改类级别属性。我知道我可以通过更改所有POST
方法并仅将ValidateAntiForgeryToken
应用于他们来实现此目的。但我希望他们是一个简单的方法。
就像Authorize
属性与AllowAnonymous
一样,您可以在类级别应用Authorize
属性,但随后可以通过应用AllowAnonymous
来更改方法级别。< / p>
[Authorize]
public class AccountController : BaseController
{
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
return View();
}
}
答案 0 :(得分:0)
我认为这篇文章会对你有帮助。 http://prideparrot.com/blog/archive/2012/7/securing_all_forms_using_antiforgerytoken
通过添加自定义IAuthorizationFilter,您可以跳过检查GET
public class AntiForgeryAttribute: IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext authorizationContext)
{
if (authorizationContext.RequestContext.HttpContext.Request.HttpMethod != "POST")
return;
new ValidateAntiForgeryTokenAttribute().OnAuthorization(authorizationContext);
}
}
或者稍后在文章中,它解释了如何创建自定义属性以跳过验证某些操作。