1

2 つのユーザー グループのいずれかがアクセスできるコントローラー アクションを作成しています。各グループにはAuthorizationFilterAttribute、グループの承認方法を定義するカスタム ロジックを含む独自の実装があります。条件付き OR を使用して、少なくとも 1 つの属性承認フィルターが満たされていることを判断できるようにしたいと考えています。

私はこのようなことができることを望んでいました:

public class ConfigController : ApiController
    {
        [AdminAuthorize || DealRoomAuthorizeAttribute]
        public IHttpActionResult GetBlah()
        {
            return Ok();
        }
    }

しかし、運が悪い!これをどのように達成できるかについてのアイデアはありますか?

4

1 に答える 1

1

承認属性が機能する方法のため、OR を直接実行することはできません。承認が失敗した場合、パイプラインを「カット」するため、最初の属性が失敗するとパイプラインが停止し、もう 1 つは停止する機会がありません。実行されました。

OR を自分で作成する独自の承認属性を実装する必要があります。既存の属性のロジックを再利用するだけなので、実装は非常に簡単です。OnAuthorization実際、既存のロジックを再利用することで、そのうちの 1 つを継承し、少なくとも、派生したメソッドをオーバーライドできます。

詳細:

于 2015-06-02T08:05:17.663 に答える