2016-11-10 120 views
0

如果HttpGet操作方法有一個授權過濾器,那麼相應的HttpPost是否也需要一個? HttpPost操作方法受到ValidateAntiForgeryToken和數據綁定的保護。任何用戶都必須通過ldap進行身份驗證。asp.net mvc5 HttpPost上的自定義授權

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


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

有什麼問題 - 是否有必要對後置操作應用auth過濾器?是。 – Nikkster

+0

是的,HttpPost是否需要該認證過濾器 – MinchMeister

回答

0

您對過濾器屬性的方法。它對其他方法沒有任何影響。你也可以在類上放置一個屬性,然後它會影響所有的方法(至少普通的Authorize屬性就是這樣工作的,所以我幾乎可以肯定這個也是這種情況)。

ValidateAntiForgeryToken對認證沒有任何作用。它只是驗證來自HTML的令牌等於來自cookie的令牌。你可以閱讀更多關於它的內容,但基本上是防止CSRF攻擊,而不是對用戶進行身份驗證。

0

是的,如果用戶需要被授權作出POST請求的MyMethod在這種情況下,它需要有授權篩選器。

例如,當您例如轉到默認情況下使用HttpGet屬性聲明的MyMethod操作的URL/{controller}/MyMethod/MVC路由,並應用任何auth過濾器等等。對於POST請求也是如此,在這種情況下,呼叫被路由到用HttpPost拖動的其他操作並運行任何過濾器。