4.4 @PostFilter 和@PreFilter 不同的是, 基于返回值相关的表达式,对返回值进行过滤。分页慎用!该过程发生接口进行数据返回之前。 相关测试与 @PreFilter 相似,参见文末提供的 DEMO。
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 一样。 7. 总结 今天讲解了 Spring Security 另一种基于注解的静态配置。相比较基于 javaConfig 的方式要灵活一些、粒度更细、基于 SpEL 表达式可以实现更加强大的功能。但是这两种的方式还是基于编程的静态方式,具有一定的局限性。更加灵活的方式应该是动态来处理用户的角色和资源的映射关系,这是以后我们将要解决的问题。本次的 DEMO 可通过 |
|