1

処理する複雑なAND/OR条件がある場合、ASP.NET Coreの認証ロジックを解決するのが難しいです。新しい承認モデルであるASP.NET Coreの複雑な条件(AND/OR)?

A & (B | C & D & E | C & F) - each condition consists of 1 or more checks 

私は(policy-basedresource-based含む)利用可能なすべての許可の種類を認識しています:私のAPIメソッドが許可を取得する前にチェックするための条件の一例。

一般に、新しい認可モデルを使用して、私はOR条件についてどうやって行くのか分かりません。

私は、これはあまりにも不格好になりますので、(私の例では、私は(B) | (C & D & E) | (C & F)のための3つの承認・ハンドラで1つの要件を作成することができないと思う十分ではありません、私はOR条件の認可ハンドラを持つことができることを理解したが、私には感じています特に、ビジネスモデルのルールのためにこれらの条件が合わない場合は)。

認可ハンドラは互いに依存できないことも理解しました。また、私は、あるハンドラを複数の要件にもっと一般的に関連付けることはできないと思います。

これらの条件を処理する他の方法はありますか?このような問題に取り組むために、複雑さを小さな単純なものに分解する方法は一般的なルールですか?

答えて

1

このようなケースを処理するために、独自のミドルウェア+カスタム属性を作成することをお勧めします。また、このようなルールを処理するには、バイナリ列挙型を定義する必要があります。

[CustomAuthorization(GroupA.A | GroupB.A & GroupC.D))] 
+0

ありがとう、どこから始めるのですか?任意のカスタム認証ミドルウェアのいくつかの良いリンク? – Learner

+0

ここから始めてみてください:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware?tabs=aspnetcore2x – Leonid

+0

そしてこれも始めるのがいいでしょう:https://dotnetcoretutorials.com/ 2017/03/10/creating-custom-middleware-asp-net-core / – Leonid

関連する問題