Skip to content

fix: 修复动态鉴权管理器路径匹配优化问题 (Issue #884) - #934

Closed
Golenspade wants to merge 1 commit into
macrozheng:masterfrom
Golenspade:fix/issue-884-context-path-matching
Closed

Golenspade wants to merge 1 commit into
macrozheng:masterfrom
Golenspade:fix/issue-884-context-path-matching

Conversation

@Golenspade

Copy link
Copy Markdown

问题描述

修复 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

sunfei7777 commented Oct 9, 2025 via email

Copy link
Copy Markdown

@516717906

516717906 commented Oct 9, 2025 via email

Copy link
Copy Markdown

@liaock

liaock commented Oct 9, 2025 via email

Copy link
Copy Markdown

@Golenspade

Copy link
Copy Markdown
Author

Closing as this repository does not merge external PRs.

@Golenspade Golenspade closed this Apr 29, 2026
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