@RolesAllowed、@DenyAll 在 Web 层中的使用?

Posted

技术标签:

【中文标题】@RolesAllowed、@DenyAll 在 Web 层中的使用?【英文标题】:@RolesAllowed, @DenyAll usage in web tier? 【发布时间】:2012-08-07 10:04:15 【问题描述】:

我正在查看 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 资源 Y Y Y 资源 Y Y Y 后构造 Y Y Y PreDestroy Y Y Y 生成 N N N RunAs N Y Y 声明角色 N Y Y RolesAllowed N Y Y 全部许可 N Y Y 拒绝所有 N Y Y

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

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于@RolesAllowed、@DenyAll 在 Web 层中的使用?的主要内容,如果未能解决你的问题,请参考以下文章

@RolesAllowed() 在 keycloak 中检查啥角色

如何访问由@RolesAllowed 保护的泽西岛资源

Spring Security应用开发(20)基于方法的授权使用@RolesAllowed注解

在 SpringBoot 应用程序中使用 @RolesAllowed 的异常

如何在 ContainerRequest 中获取会话对象以使用注解 @RolesAllowed(Role_user)?

使用 ContainerRequestFilter 在 Jersey WebService 中自定义 @RolesAllowed 角色