asp.net mvc5在HttpPost上自定义授权

本文关键字:自定义 授权 HttpPost net mvc5 asp | 更新日期: 2023-09-27 18:17:24

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

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

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

asp.net mvc5在HttpPost上自定义授权

您所拥有的过滤器属性作用于一个方法。它对其他方法没有任何影响。您也可以在类上放置一个属性,然后它将影响所有的方法(至少普通的Authorize属性是这样工作的,所以我几乎可以肯定这也是这种情况)。

ValidateAntiForgeryToken不做任何认证。它只是验证来自HTML的令牌是否等于来自cookie的令牌。您可以阅读更多关于它的信息,但基本上它是防止CSRF攻击,而不是验证用户。

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

例如,当你访问URL/{controller}/MyMethod/MVC时,会路由到默认情况下使用HttpGet属性声明的MyMethod动作,并应用任何认证过滤器等等。POST请求也是如此,在这种情况下,调用被路由到使用HttpPost声明的其他操作,并运行任何过滤器。