我試圖在Web API控制器上實現自定義授權屬性,但遇到了意外的行爲。ASP.NET Web API的自定義MVC AuthorizeAttribute
<Authorize(Users:="myUser")>
Public Function GetTodoItems() As IQueryable(Of TodoItem)
上面的代碼工作得非常好:它將使「MYUSER」檢索項目,BOT沒有其他人被允許訪問。但是,當我使用我的自定義授權嘗試相同的方法時,整個檢查將被跳過,並且任何用戶都可以訪問資源。我的派生類中的AuthorizeCore
和OnAuthorization
重寫的方法都沒有被調用。
<MyAuth(Users:="myUser")>
Public Function GetTodoItems() As IQueryable(Of TodoItem)
的派生類System.Web.Mvc.AuthorizeAttribute
繼承,並且該項目在IIS上部署,與Windows身份驗證 & 模擬啓用和匿名身份驗證禁用。
如果我將相同的自定義授權添加到MVC控制器,那麼它的工作原理。但在API控制器上,什麼都沒有。如果Authorize
屬性也不起作用,它會更有意義。我錯過了什麼嗎?這是預期的行爲還是Beta版中的錯誤?
謝謝,改變命名空間的工作!使用'System.Web.Mvc.AuthorizeAttribute'工作在Web API上似乎很奇怪,而我的類從那個確切的類派生出來,卻沒有。 – 2012-02-28 16:04:09
似乎很多類型在MVC和Web API之間重複。也許他們會被合併,我們將在發佈中獲得單一樣本類型。所以,可能任何一個'AuthorizeAttibute'對象都在內部檢查,只是猜測。 – 2012-02-28 16:08:06