对HttpPost的asp.net mvc5自定义授权

时间:2016-11-10 18:25:04

标签: c# asp.net-mvc-5

如果HttpGet操作方法有一个授权过滤器,相应的HttpPost是否也需要一个? HttpPost操作方法受ValidateAntiForgeryToken和数据绑定的保护。任何用户都必须通过ldap进行身份验证。

[HttpGet]
[CustomAuthorization("Admin", "User")]
public ViewResult MyMethod(){}


[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult MyMethod([Bind(Include = "Vars")] Model model){}

2 个答案:

答案 0 :(得分:0)

您对方法有效的过滤器属性。它对其他方法没有任何影响。你也可以在类上放置一个属性,然后它会影响所有的方法(至少普通的Authorize属性就是这样的,所以我几乎可以肯定这个方法的情况也是如此)。

ValidateAntiForgeryToken对身份验证没有任何作用。它只是验证来自HTML的令牌是否等于来自cookie的令牌。您可以阅读更多相关信息,但基本上是为了防止CSRF攻击,而不是对用户进行身份验证。

答案 1 :(得分:0)

是的,如果在这种情况下需要授权用户向MyMethod发布帖子请求,那么它也需要具有授权过滤器。

例如,当您转到URL / {controller} / MyMethod / MVC路由到默认情况下使用HttpGet属性声明的MyMethod操作时,并应用任何身份验证过滤器等等。对于POST请求也是如此,在这种情况下,呼叫被路由到使用HttpPost延迟的其他操作并运行任何过滤器。