Java EE のセキュリティに問題があります。一種の e ショップであるはずのアプリケーションがあります。データベースにマップされていないユーザークラスと、異なるテーブルにマップされているクライアントと管理者の 2 つの継承されたクラスの 3 つのエンティティがあります。
@MappedSuperclass
@Inheritance(strategy= InheritanceType.TABLE_PER_CLASS)
public class User implements Serializable {...}
@Entity
public class Client extends User {...}
@Entity
public class Administrator extends User {...}
ここで、クライアントと管理者のリソースにセキュリティを提供する必要があります。jdbcRealm と標準のログイン ページで FORM 認証を使用します。
<form action="j_security_check" method="POST"> <input type="text" name="j_username"/> <input type="password" name="j_password"/> <input type="submit" value="ログイン"/> </フォーム>
しかし問題は、jdbcRealm が 1 つのテーブルしか参照しないことです。また、web.xml で 2 つの jdbcRealms を設定することはできません。では、データベース構造を変更せずに、クライアントと管理者の両方に認証を提供するにはどうすればよいでしょうか? 単一のアプリケーションで少数の jdbcRealms を使用することは可能ですか?