私は、サイトの領域 (モジュール) 内のセキュリティを強化する過程にあるプロジェクトに取り組んでいます。全部で 5 つのモジュールがあり、現在 5 つすべてが 3 つのチェックを行う同じ Custom Authorize Attribute クラスを共有しています。
- 受け入れ条件に同意しましたか?はい、2 に進みます。いいえ、あなたは無許可であり、無許可のページに移動します。
- あなたはサイトのメンバーですか?はい、3 に進みます。いいえ、あなたは無許可であり、無許可のページに移動します。
- あなたの役割はこのモジュールで許可されていますか? はい、次に進みます。いいえ、あなたは許可されていないため、許可されていないページに移動します。
現在、5 つのモジュールのクラスは、このカスタム承認属性によって装飾されており、個々のロールがチェックされています (3/5 のモジュールには 1 つの個別のロールがあり、他の 2 つのモジュールには複数のロールがあり、1 つのモジュールには 4 つのロールがあり、もう 1 つのモジュールには I'mについての投稿は現在 3 です)。しかし、1 つのモジュールでセキュリティを強化する中で、それをどのように行うかが問題になっています。変更中のこのモジュールには、3 つの役割 (読み取り専用、ユーザー、管理者) があります。
- 読み取り専用: そのようですね。追加/編集/削除の権限はありません。
- ユーザー: 読み取りアクセス権があり、保留中の他の権限チェックを追加/編集/削除できます。
- 管理人:お好きなようにどうぞ。追加/編集/削除して、管理者専用エリアに入ることができます。
ユーザーは、最大 2 つの他のリストのアクセス許可のチェックを含む二次的なチェック セットがあるため、完全に特殊なケースです (常に 2 つのリストの 1 つをチェックし、もう 1 つは 1 つの選択領域用です)。
私の質問は、このセキュリティは元のカスタム承認属性の外部にあり、この 1 つのモジュールに依存しているため、新しいカスタム承認属性を作成する必要があるか、元のものを変更する必要があるかということです。
私の最初の考えは、このモジュールのクラス全体の装飾を取り除き、代わりに各メソッドに適用することでした。このルートに進むと、現在のカスタム承認属性に新しいロジックを追加するのに役立ちます。
しかし、そこには問題があります。管理者および読み取り専用ユーザーに対してこれを行うとうまくいきますが、問題はユーザーの場合です。ユーザーは、表示しようとしている特定のレコードへのアクセス許可があるかどうかを確認するために、二次チェックを行う必要があります。そうでない場合は、読み取り専用ユーザーのように許可されますが、編集はできません。
この節があるため、チェックとカスタム Authorize 属性を行うプライベート メソッドを使用するかどうかについては、少し確信が持てません。
どんな方向性やアイデアも大歓迎です。ありがとう。