Skip to content

Conversation

Golenspade
Copy link

问题描述

修复 Issue #884: 动态鉴权管理器路径匹配优化

当应用配置了 server.servlet.context-path 时,动态权限管理器的路径匹配会失败,导致无法正确查询到所需的权限。

修复内容

核心修复

  • DynamicSecurityMetadataSource.java: 添加 context-path 前缀移除逻辑
  • DynamicSecurityFilter.java: 添加 context-path 前缀移除逻辑

编译问题修复

  • SwaggerProperties.java: 手动添加 getter/setter 方法
  • WebLog.java: 手动添加 getter/setter 方法
  • IgnoreUrlsConfig.java: 手动添加 getter/setter 方法

测试验证

  • PathMatchingTest.java: 添加完整的单元测试,覆盖各种 context-path 场景

测试结果

✅ 所有 5 个测试用例全部通过

修复效果

修复后的代码能够正确处理以下场景:

  1. 无 context-path: /admin/users → 正常匹配 /admin/**
  2. 有 context-path: /mall/admin/users → 移除 /mall 前缀后匹配 /admin/**
  3. 空 context-path: 不会进行任何修改
  4. null context-path: 不会进行任何修改
  5. 不匹配的 context-path: 不会进行修改,保持原路径

向后兼容性

  • ✅ 不影响没有配置 context-path 的应用
  • ✅ 不影响现有的权限控制逻辑
  • ✅ 性能影响最小,只是简单的字符串操作

相关文件

  • mall-security/src/main/java/com/macro/mall/security/component/DynamicSecurityMetadataSource.java
  • mall-security/src/main/java/com/macro/mall/security/component/DynamicSecurityFilter.java
  • mall-security/src/test/java/com/macro/mall/security/component/PathMatchingTest.java
  • mall-common/src/main/java/com/macro/mall/common/domain/SwaggerProperties.java
  • mall-common/src/main/java/com/macro/mall/common/domain/WebLog.java
  • mall-security/src/main/java/com/macro/mall/security/config/IgnoreUrlsConfig.java

详细说明

请查看 SECURITY_FIX_SUMMARY.md 文件获取完整的修复说明和测试详情。

Closes #884

- 修复 DynamicSecurityMetadataSource 中 context-path 处理问题
- 修复 DynamicSecurityFilter 中白名单路径匹配问题
- 添加 context-path 前缀移除逻辑,确保路径匹配正确
- 修复 Lombok 注解处理器问题,手动添加必要的 getter/setter 方法
- 添加完整的单元测试验证修复效果

修复内容:
- DynamicSecurityMetadataSource.java: 添加 context-path 处理
- DynamicSecurityFilter.java: 添加 context-path 处理
- SwaggerProperties.java: 添加 getter/setter 方法
- WebLog.java: 添加 getter/setter 方法
- IgnoreUrlsConfig.java: 添加 getter/setter 方法
- PathMatchingTest.java: 添加测试用例

测试结果: 5/5 通过 ✅
@sunfei7777
Copy link

sunfei7777 commented Oct 9, 2025 via email

@516717906
Copy link

516717906 commented Oct 9, 2025 via email

@liaock
Copy link

liaock commented Oct 9, 2025 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

动态鉴权管理器路径匹配优化

4 participants