山一程--软件开发--系统--后端权限层级 --practical(2) ACL
目的:掌握Spring ACL 配合 SpEL , db 存储, EhCache / Caffeine 缓存
references thanks:
1.book <Spring 5 reciple> chapter 7 Spring security
index:
1. Spring ACL 体系构成
2. 实践要点记录
1.Spring security ACL core
2. 实践要点:
2.1 reference
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-acl</artifactId>
<version>5.5.0</version>
</dependency>
注意该module 版本要兼容当前 Spring boot 版本,否则会报错:

======
项目因缓存 Ehcache 报错,暂时卡住:

网上查找的办法无效;

1. 记录:login 被设置为忽略权限验证,但是返回 403 权限拒绝。 Post 登录的方式.



原因在于默认开启了 csrf 跨站防护。post 是被拦截的。
解决办法二选一:
1.关闭 security.csrf().disable()
2. 开启 CSRF, 设置将令牌存入 cookie 中. 在 Post 请求头中带入令牌参数提交 (recommand)
thanks refernce: https://blog.csdn.net/Memory_2020/article/details/125793563
Spring security 项目记录:
1. User 多对多 Roles 实体关系表中。
Hibernate 默认的时懒加载模式, 在构造 UserDetails 实现后,填充 SecurityContext 的 authorizations 时会报错。

Filter 是在 Spring 自动注入依赖之前,因此无法用 @Autowired 注解来注入对象。
要从 WebApplicationContext 里面来获取对象.

注意从 token 和 httpServleRequest 中来组装和填充 SecurityContext.

后续用户的信息获取,可以使用 SecurityContextHolder,底层 ThreadLocal , 无需传参.

鉴权要配合 SpEL 表达式:
注意开启安全注解




浙公网安备 33010602011771号