jsf-2 - Web 层中的@RolesAllowed、@DenyAll 用法?

标签 jsf-2 java-ee-6 jsr250

我正在查看 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/

相关文章:

css - h :dataTable always displays one row; won't display zero rows

java - Primefaces fileDownload - 已经为此响应调用了 getOutputStream()

java - 覆盖 xml 文件中的 CDI 配置

jquery - 细胞选择数据表 PRIMEFACES?

java - JPA - 为持久方法生成的查询不会插入所有列

java - 我将如何向 Activemq 发送消息

java - JSR 250 方法级别安全性在 Spring MVC 中不起作用

java - Spring Security + JSR 250 + EJB 3.1 不工作

java - 用于注入(inject)应用程序上下文的 JSR-250 与 JSR-330

jsf - 如何在 JSF 中返回状态消息?