3

我正在查看 Java EE 6 规范部分 EE.6.25,它表明 Web 容器必须支持以下注释:@PermitAll、@DenyAll、@RolesAllowed、@DeclareRoles 和 @RunAs。

EE.6.25 Java™ 平台 1.1 要求的通用注释

Common Annotations 规范定义了被其他几个规范(包括本规范)使用的 Java 语言注释。使用这些注解的规范完全定义了这些注解的要求。小程序容器不需要支持任何这些注释。所有其他容器必须为所有这些注解提供定义,并且必须支持这些注解的语义,如相应规范中所述并总结在下表中。

表 EE.6-5 容器支持的常用注解

 
注释应用程序客户端 Web EJB

资源 YYY
资源 YYY
PostConstruct YYY
预销毁 YYY
生成的NNN
RunAs NYY
DeclareRoles NYY
RolesAllowed NYY
允许所有纽约年
拒绝所有纽约

在规范中再往下一点,它说,“......现在需要 Web 容器支持 RolesAllowed、PermitAll 和 DenyAll 注释。Servlet 规范和 JAX-RS 规范包含详细信息。”

它没有提到 JSF 规范,所以我假设这些注释不能用于托管 bean。为什么不?

除了在 web.xml 中使用页面级声明性安全性之外,如何在 Web 层对非 servlet 或过滤器的对象实施诸如授权之类的横切关注点?

4

1 回答 1

3

...答案是... EJB 是 CDI 托管 bean。要在托管 bean 上使用 @RolesAllowed,只需将其转换为 EJB 即可。这是一个用作支持 bean 的 EJB示例!

于 2012-08-11T21:47:27.047 回答