2011-08-07 10 views
1

さまざまなタイプのユーザーが存在するエンタープライズレベルのアプリケーションを作成しています。通常ユーザー、組織管理者、スーパー管理者。すべてのユーザーには異なる役割があります。エンタープライズレベルのアプリケーションではどのように役割を設計する必要がありますか?

  1. 通常のユーザー:コアアプリケーションのアクセス機能。

  2. 組織管理:ユーザーとそのorgnisationを作成します。

  3. スーパーユーザー:このアーキテクチャを設計するための方法、ユーザーと組織

を承認しますか?ロールを別々のクラスとして設計する必要があります。または、継承を使用して異なる種類のユーザーを作成することができますか?

答えて

1

通常、役割はクラスとしてモデル化されていませんが、単純な文字列です。ユーザーが認証すると、これらの文字列の多くがユーザーのSecurity principalに関連付けられます。

これらの役割は、コードで照会することができます。 HttpServletRequest#isUserInRole経由のWebレイヤー、SessionContext.isCallerInRoleなどを経由したEJBモジュールなど。この依存関係をロールに宣言するアノテーションもあります。

したがって、既存のセキュリティと役割の構造を活用したい場合は、どの役割を定義し、認証されたユーザーの役割のコレクションを取得できるログインモジュールを提供する以外の方法はありません。

この最後のことは、デザインする必要があるかもしれませんが、必ずしもそうではありません。ユーザーをディレクトリサービス(LDAPなど)に保存する場合は、LDAPログインモジュールを使用できます。ほとんどのアプリケーションサーバーまたはサーブレットコンテナ(JBoss AS、Glassfish、Tomcatなど)は、デフォルトでそれらを提供します。ユーザーがDB内にいる場合、ある列のユーザーに対する外部キーと別の列の役割名を持つ単純な表が行います。その後、簡単なクエリを使用してロールをフェッチするDBログインモジュールを使用できます。

1

データベースレベルでは、ユーザーテーブル、ロールテーブル、およびどのユーザーにどのロールがあるかを制御するユーザーロールテーブルがあります。

クラスレベルでは、ロールのリストをプロパティとして持つユーザークラスがあります。

たとえば、IsAdminまたはIsSuperUserなどのユーザークラスにメソッドを追加できます。

関連する問題