2016-05-01 7 views
0

私はASP.NETアイデンティティ2はつまり読み取り権限を与え、対応する役割グループに権限を与えることで使用されていると私は適切に研究室の部分を管理することができますMVCアプリケーションを持っていますLab1GroupによってLab1の生徒に送信されます。しかし、管理者が新しい実験室レッスン、つまりLab2を作成し、それを対応する役割グループ、つまり新しい研究室の作成後に作成されるLab2Groupに追加できるように、アプリケーションが柔軟であることを希望します。新しいラボの役割グループを作成するには、CRUD操作を持つ新しいコントローラーを作成する必要がありますが、新しく作成したラボレッスンで同じコントローラーを使用したいと思います。出来ますか?通常、コントローラへのアクセス許可を[Authorize]属性を使用して定義する必要があるため、新しく作成されたロールをこの属性に追加できるかどうかわかりません。何か案が?ASP.NETアイデンティティに延びる役割/役割グループに

+0

さらに柔軟なものを実装するために、カスタムの承認属性を記述することができます。http://weblogs.asp.net/jongalloway/asp-net-mvc-authentication-customizing-authentication-and-authorization-the- right-way –

+0

@BrendanGreenあなたの返事に感謝します。この記事の手順に従って、新しいラボを作成して新しいカスタムロールまたはグループを作成できますか?問題ははっきりしていますか? –

+0

@BrendanGreenどんなアイデアですか? –

答えて

2

ロール認可に動的な動作を適用する場合は、データベースにルートとロールのマッピングを作成できます。必要に応じてアプリケーションにキャッシュすることもできます。次に、現在のルート(コントローラまたはコントローラ+アクション)に必要なロールを取得し、現在のコンテキストから現在のユーザロールにアクセスできる、カスタム権限属性を作成する必要があります。両方の情報があり、アプリケーションロジックごとに新しい属性のOnAuthorizationメソッドをオーバーライドすることで、ユーザーの承認/非承認を行うことができます。

問題文を分割して解決しようとします。

  1. は新しい役割/ロールベースのグループを作成するために持っていて、前方の状態でなければならないとアプリの管理者がそれを行うことができ、適切なユーザーに割り当てる必要があります。アイデンティティ2.0はこれに適しています。

  2. Lab1とLab2の経路は、labcontroller/lab1、labcontroller/lab2のようなものです。認可プロセスを動的にする場合は、dbでルートと役割のマッピングを行うことができます。

  3. すべてのユーザーがlabcontroller/lab1にアクセスすると、カスタム許可属性のOnAuthorizationメソッドはコンテキストから現在のルートを読み取り、上記のマッピングから必要な役割を取得します。
  4. 現在のユーザーにも必要な役割がある場合は、許可が与えられます。
+0

返信ありがとうございます。あなたが言及したステップに従うことで、質問で説明したように、作成されたすべてのラボの新しい役割を作成することができますか?一方、あなたが言及したこのアプローチでAsp.NET Identity 2.0以降のバージョンを使用できますか?もしそうなら、例を挙げてもらえますか? –

+0

編集済みの回答です。 –

+0

ありがとうございました。私は投票しますが、ソリューション・ステップの各部分のサンプル・コードを投稿すればよいと思います。 –