当前位置: 首页 > news >正文

SpringSecurity6-授权-动态权限

接上一篇SpringSecurity认证,新增权限表及中间表:

permission表:
在这里插入图片描述
role_permission表:
在这里插入图片描述
引入配置:
在这里插入图片描述

/*** 动态权限校验*/
@Component
public class MyAuthorizationManager implements AuthorizationManager<RequestAuthorizationContext> {// 路径匹配器,精确匹配private final AntPathMatcher antPathMatcher = new AntPathMatcher();@Resourceprivate PermissionService permissionService;@Overridepublic AuthorizationDecision check(Supplier<Authentication> authenticationSupplier, RequestAuthorizationContext object) {// 请求资源路径String requestURI = object.getRequest().getRequestURI();// 登录用户所拥有的权限-角色Authentication authentication = authenticationSupplier.get();Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();// 遍历角色for (GrantedAuthority authority : authorities) {// MyUser构建时存储的是角色名称String roleName = authority.getAuthority();// 查询角色的权限List<Permission> permissions = permissionService.getByRoleName(roleName);// 遍历角色的权限for (Permission permission : permissions) {// 如果匹配到权限,则放行if (antPathMatcher.match(permission.getPath(), requestURI)) {return new AuthorizationDecision(true);}}}// 未匹配到权限,则拒绝访问,403return new AuthorizationDecision(false);}
}

完成上述配置后,登录,访问资源,如果登录用户的角色没有对应的资源路径权限,则报403,否则正常访问。

相关文章:

  • (NIPS-2024)CogVLM:预训练语言模型的视觉专家
  • 大事件项目记录13-接口开发-补充
  • 深入剖析 Linux 内核网络核心:sock.c 源码解析
  • 现代 JavaScript (ES6+) 入门到实战(四):数组的革命 map/filter/reduce - 告别 for 循环
  • 数据挖掘、机器学习与人工智能:概念辨析与应用边界
  • 设计模式精讲 Day 18:备忘录模式(Memento Pattern)
  • FastAPI路由管理APIRouter实战指南
  • 广度优先搜索BFS(广搜)复习(c++)
  • 【智能协同云图库】智能协同云图库第三弹:基于腾讯云 COS 对象存储—开发图片模块
  • 电子计数跳绳原型
  • 如何撰写有价值的项目复盘报告
  • 深入剖析Nacos服务发现与注册,及如何基于LoadBalancer实现负载均衡
  • Tomcat 安装使用教程
  • 第10篇 图像语义分割和目标检测介绍
  • OpenCV 4.10.0 移植
  • Kafka与RabbitMQ相比有什么优势?
  • 第七节 矩阵键盘模块
  • MCP Chart Server服务本地部署案例
  • 咸虾米项目总结1--const用法
  • LeetCode Hot 100 最大子数组和