山一程--软件开发--系统--后端权限层级 --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 表达式:

注意开启安全注解


 

posted @ 2023-08-23 13:36  君子之行  阅读(14)  评论(0)    收藏  举报