Web APIコントローラーでカスタム許可属性を実装しようとしましたが、予期しない動作が発生しました。ASP.NET Web APIのカスタムMVC AuthorizeAttribute
<Authorize(Users:="myUser")>
Public Function GetTodoItems() As IQueryable(Of TodoItem)
は、上記のコードは非常によく動作します。それは、ボットの誰も他に許可されているアクセス「myuserの」は、アイテムを取得することができます。ただし、私のカスタム認証で同じアプローチを試すと、チェック全体がスキップされ、どのユーザーもそのリソースにアクセスできます。派生クラス内のAuthorizeCore
とOnAuthorization
のオーバーライドされたメソッドは呼び出されません。
<MyAuth(Users:="myUser")>
Public Function GetTodoItems() As IQueryable(Of TodoItem)
派生クラスがSystem.Web.Mvc.AuthorizeAttribute
から継承し、プロジェクトが有効Windows認証 & 偽装して、IIS上で展開され、そして匿名認証無効。
MVCコントローラに同じカスタム権限を追加しても機能します。しかし、APIコントローラでは、何もありません。 Authorize
属性が機能しなかった場合は、より意味をなさないでしょう。何か不足していますか?これは予想される動作か、ベータ版のバグですか?
ありがとうございました。 Web APIのために働いた 'System.Web.Mvc.AuthorizeAttribute'を使うと、まったく変わったようですが、そのクラスから派生した私のクラスはそうではありませんでした。 –
MVCとWeb APIの間には多くの型が重複しているようです。多分それらは合併されるでしょう、そして、我々はリリースでタイプの単一のサンプルを持っています。だから、おそらく 'AuthorizeAttibute'オブジェクトのどちらかが内部的にチェックされているだけです。 –