我在Eclipse Neon中有一个Java EE项目,包含Java 1.8,JSF 2.2,JPA 2.1,部署在WildFly 10.0上。我使用的安全注解如下:带有@RolesAllowed的Java @Statless EJB能否从没有安全注解的类继承方法?
@Stateless
@RolesAllowed("SysAdmin")
public class EJBImpl extends POJOSuperClass implements EJBInterface {
/* ... */
}
的事情是:POJOSuperClass
不使用安全注解:
public abstract class POJOSuperClass {
public void someMethod() {
/* ... */
}
/* ... */
}
当JSF的bean调用的EJBImpl
实例的继承someMethod()
,我得到一个例外,即使登录身份有角色SysAdmin
用户:
ERROR ... EJB Invocation failed on component EJBImpl for method public abstract void POJOSuperClass.someMethod(): javax.ejb.EJBAccessException: WFLYEJB0364: Invocation on method: public abstract void POJOSuperClass.someMethod() of bean: EJBImpl is not allowed
如果我添加@PermitAll
注释POJOSuperClass
,它的工作原理是我想要的(如果没有例外,如果以管理员身份登录,则不会例外),但是我想保留POJOSuperClass,这是我在不同项目中重复使用的类,没有这些注释(如果我'如果我使用超类的注解,我不得不在其子类中使用它,但是我不想在其他不使用JAAS的项目中使用它)。
我该如何做到这一点?
会发生什么事,如果你删除'@RolesAllowed(翻转的瞬间访问“SysAdmin”)',并将它放在'SysAdmin'访问的方法上? – ujulu
问题是'EJBImpl'继承了'POJOSuperClass'中'SysAdmin'访问的方法,我不想在超类中有任何注释... –