2017-02-09 6 views
1

Java Webアプリケーションを構築しています。我々は、EJBコンテナとJPAをWildfly 9.2とともに使用しています。特定のエンティティにのみEJBロールを付与する方法

ユーザーが特定の役割を持つ権限システムを統合したいが、この役割は特定のエンティティとの組み合わせでのみ許可される。このアクセスリソース部門に名前を付けます。

だから我々は、このようなテーブルに格納されたユーザーの権限のリストを持っているでしょう:私たちはグローバルな役割を持っているほか

| User ID | Department | Role | 
| ------- | ---------- | ------- | 
| 1  | A   | MANAGER | 
| 1  | B   | ADMIN | 
| 2  | B   | MANAGER | 

を。ユーザーは、上記の表に質問の項目がない場合に適用される一連のグローバルロールを持っています。

| User ID | Role | 
| ------- | ------- | 
| 1  | VIEWER | 
| 3  | MANAGER | 

私たちは、ユーザーがある部門に所属しているかどうかを簡単に確認できますか?

アノテーション@RolesAllowedを使用するだけで、特定の役割を確認できますが、部門に限定されません。

+0

フィルターについてはどうですか? URLを指定すると、そのURLでどの部門にアクセスするのかはわかりますか?ユーザーがその部門にいない場合は、要求を拒否します。解決策が何であれ、再編成があり、部門が変わるとどうなりますか? –

+0

または、おそらくEJB層のインターセプタ。 –

+0

ありがとうございます。私たちは確かにそれを調べました。 現在、Apache Shiroも探しています。これは私たちの要求を満たすかもしれません。 –

答えて

0

エンタープライズJavaセキュリティロールは約です。

したがって、セキュリティシステムで部門をモデルとしてモデル化することもできます。ユーザーに複数のセキュリティロールを割り当てても問題ありません。管理者や部署Bにあるこのメソッドを呼び出すを許可されている

@RolesAllowed({"manager", "B"} 
public void someBusinessMethod(...) { 
    ... 
} 

ユーザーのみ:

したがって、部門Bにマネージャを与え。

+0

あなたの提案をありがとうが、私たちの部署は動的です。だから私たちの注釈にそれらをハードコードすることはできません。 –

関連する問題