我正在查看 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.xml 中使用页面级声明性安全之外,如何在 Web 层中对非 servlet 或过滤器的对象实现授权等横切关注点?
最佳答案
...答案是...EJB 是 CDI 管理的 bean。要在托管 bean 上使用 @RolesAllowed,只需将其转换为 EJB 即可。这是 an example用作支持 bean 的 EJB!
关于jsf-2 - Web 层中的@RolesAllowed、@DenyAll 用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11895970/