我正在查看Java EE 6规范部分EE.6.25,它表明Web容器必须支持以下注释:@ PermitAll,@ DenyAll,@ RolesAllowed,@ DeclareRoles和@RunAs。
EE.6.25 Java™Platform 1.1要求的通用注释
Common Annotations规范定义了Java语言注释 由其他几个规范使用,包括本规范。规格 使用这些注释完全定义了这些注释的要求。该 applet容器不需要支持任何这些注释。所有其他容器 必须提供所有这些注释的定义,并且必须支持语义 这些注释中的相应规范和描述 总结在下表中。
表EE.6-5容器的常用批注支持
Annotation App Client Web EJB Resource Y Y Y Resources Y Y Y PostConstruct Y Y Y PreDestroy Y Y Y Generated N N N RunAs N Y Y DeclareRoles N Y Y RolesAllowed N Y Y PermitAll N Y Y DenyAll N Y Y
在规范中进一步向下,它说,“...... Web容器现在需要支持RolesAllowed,PermitAll和DenyAll注释.Servlet规范和JAX-RS规范包含方式“。
它没有提到JSF规范,所以我假设这些注释不能用于托管bean。为什么不呢?
如何在Web层中对非servlet或过滤器的对象实施授权,以及在web.xml中使用页面级声明性安全性,那么交叉问题如何?
答案 0 :(得分:3)
...答案是...... EJB是CDI托管bean。要在托管bean上使用@RolesAllowed,只需将其转换为EJB即可享受。这是用作辅助bean的EJB的an example!