我在 Java EE 中遇到安全问题。我有一个应用程序,它应该是一种电子商店。我有三个实体:未映射到数据库的用户类和两个继承的类——客户端和管理员,它们映射到不同的表中:
@MappedSuperclass
@Inheritance(strategy= InheritanceType.TABLE_PER_CLASS)
public class User implements Serializable {...}
@Entity
public class Client extends User {...}
@Entity
public class Administrator extends User {...}
现在我需要为客户端和管理员资源提供安全性。我将 FORM 身份验证与 jdbcRealm 和标准登录页面一起使用:
<form action="j_security_check" method="POST">
<input type="text" name="j_username"/>
<input type="password" name="j_password"/>
<input type="submit" value="登录"/>
</form>
但问题是 jdbcRealm 只引用一张表。并且不允许在 web.xml 中设置两个 jdbcRealms。那么如何在不改变数据库结构的情况下为客户和管理员提供身份验证呢?是否可以在单个应用程序中使用少量 jdbcRealms?