Spring Security基于注解的接口角色访问控制怎么实现
导读:本文共1564字符,通常情况下阅读需要5分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要:该过程发生在接口接收参数之前。 入参必须为 java.util.Collection 且支持 remove(Object) 的参数。如果有多个集合需要通过 filterTarget=<参数名> 来指定过滤的集合。内置保留名称 filterObject 作为集合元素的操作名来进行评估过滤。/p><p>样例:</p><pre>//入参为Collec... ...
目录
(为您整理了一些要点),点击可以直达。该过程发生在接口接收参数之前。 入参必须为 java.util.Collection 且支持 remove(Object) 的参数。如果有多个集合需要通过 filterTarget=<参数名> 来指定过滤的集合。内置保留名称 filterObject 作为集合元素的操作名来进行评估过滤。/p><p>样例:</p><pre>//入参为Collection<String>ids测试数据["Felordcn","felord","jetty"]//过滤掉felordjetty为Felordcn@PreFilter(value="filterObject.startsWith('F')",filterTarget="ids")//如果当前用户持有ROLE_AD角色参数都符合否则过滤掉不是f开头的//DEMO用户不持有ROLE_AD角色故而集合只剩下felord@PreFilter("hasRole('AD')orfilterObject.startsWith('f')")</pre
4.4 @PostFilter
和@PreFilter 不同的是, 基于返回值相关的表达式,对返回值进行过滤。分页慎用!该过程发生接口进行数据返回之前。
5. 使用 securedEnabled
如果你在 @EnableGlobalMethodSecurity 设置 securedEnabled 为 true ,就开启了角色注解 @Secured ,该注解功能要简单的多,默认情况下只能基于角色(默认需要带前缀 ROLE_)集合来进行访问控制决策。
该注解的机制是只要其声明的角色集合(value)中包含当前用户持有的任一角色就可以访问。也就是 用户的角色集合和 @Secured 注解的角色集合要存在非空的交集。 不支持使用 SpEL 表达式进行决策。
6. 使用 jsr250Enabled
启用 JSR-250 安全控制注解,这属于 JavaEE 的安全规范(现为 jakarta 项目)。一共有五个安全注解。如果你在 @EnableGlobalMethodSecurity 设置 jsr250Enabled 为 true ,就开启了 JavaEE 安全注解中的以下三个:
@DenyAll 拒绝所有的访问
@PermitAll 同意所有的访问
@RolesAllowed 用法和 5. 中的 @Secured 一样。
Spring Security基于注解的接口角色访问控制怎么实现的详细内容,希望对您有所帮助,信息来源于网络。