2

カスタム承認フィルターの実装に base.OnAuthorization(filterContext) の呼び出しが最終ステップとして含まれるガイドをたくさん見てきました。私は独自のカスタム認証フィルターを持っており、上記の説明なしで完全に機能します。ただし、base.OnAuthorization(filterContext) への呼び出しを追加すると、すべてのチェックが成功したにもかかわらず、WebAPI サービスが 401 を返します。

1) base.OnAuthorization を呼び出す必要があるのはなぜですか? 2) 401 を返すのはなぜですか?

編集:デフォルトのメンバーシップとロールプロバイダーに関係していると思います。私はそれらをスキップしているので、それが理由でしょうか?

base.OnAuthorization を呼び出すとすぐに、応答が 401 になります。

4

1 に答える 1

3

すべてを自分で処理する場合は、それを呼び出す必要はありません。

ただし、そうすると、次の条件のいずれかが満たされた場合、承認ロジックはユーザー(IPrincipal.Identity)をプルアウトし、承認(401)を拒否します。Thread.CurrentPrincipal

  • IPrincipal無効である

  • IPrincipal.Identity認証されていません

  • IPrincipal.Identity認証されているが、許可された
    ユーザーグループに属していない場合、またはユーザーが許可された役割(属性で指定されている)のいずれにも属していない場合

于 2012-09-30T21:15:55.877 に答える