From d5149b2088466517bf9a46a5cc453abe6885dc38 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 10 Apr 2026 16:27:08 +0800 Subject: [PATCH] Refactor permission cache key extraction methods for improved clarity and performance --- .../PermissionGrantCacheItem.cs | 7 +++--- .../ResourcePermissionGrantCacheItem.cs | 7 +++--- .../PermissionGrantCacheItem_Tests.cs | 21 ------------------ .../ResourcePermissionGrantCacheItem_Tests.cs | 22 ------------------- 4 files changed, 8 insertions(+), 49 deletions(-) diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionGrantCacheItem.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionGrantCacheItem.cs index 597fe1c6dd..a89a586cbd 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionGrantCacheItem.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionGrantCacheItem.cs @@ -1,4 +1,6 @@ using System; +using System.Linq; +using Volo.Abp.Text.Formatting; namespace Volo.Abp.PermissionManagement; @@ -26,8 +28,7 @@ public class PermissionGrantCacheItem public static string GetPermissionNameFormCacheKeyOrNull(string cacheKey) { - const string separator = ",n:"; - var index = cacheKey.LastIndexOf(separator, StringComparison.Ordinal); - return index >= 0 ? cacheKey.Substring(index + separator.Length) : null; + var result = FormattedStringValueExtracter.Extract(cacheKey, CacheKeyFormat, true); + return result.IsMatch ? result.Matches.Last().Value : null; } } diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/ResourcePermissionGrantCacheItem.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/ResourcePermissionGrantCacheItem.cs index f03a997b92..59362f6f5f 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/ResourcePermissionGrantCacheItem.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/ResourcePermissionGrantCacheItem.cs @@ -1,4 +1,6 @@ using System; +using System.Linq; +using Volo.Abp.Text.Formatting; namespace Volo.Abp.PermissionManagement; @@ -26,8 +28,7 @@ public class ResourcePermissionGrantCacheItem public static string GetPermissionNameFormCacheKeyOrNull(string cacheKey) { - const string separator = ",n:"; - var index = cacheKey.LastIndexOf(separator, StringComparison.Ordinal); - return index >= 0 ? cacheKey.Substring(index + separator.Length) : null; + var result = FormattedStringValueExtracter.Extract(cacheKey, CacheKeyFormat, true); + return result.IsMatch ? result.Matches.Last().Value : null; } } diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionGrantCacheItem_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionGrantCacheItem_Tests.cs index 0d03918f2b..e971e5ecfe 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionGrantCacheItem_Tests.cs +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionGrantCacheItem_Tests.cs @@ -12,25 +12,4 @@ public class PermissionGrantCacheItem_Tests PermissionGrantCacheItem.GetPermissionNameFormCacheKeyOrNull(key).ShouldBe("aaa"); PermissionGrantCacheItem.GetPermissionNameFormCacheKeyOrNull("aaabbbccc").ShouldBeNull(); } - - [Theory] - [InlineData("MyModule.Users.Create", "R", "admin")] - [InlineData("AbpIdentity.Users", "U", "550e8400-e29b-41d4-a716-446655440000")] - [InlineData("Permission.With.Many.Dots", "T", "tenant-key-123")] - [InlineData("Simple", "R", "")] - public void GetPermissionNameFormCacheKeyOrNull_Should_Extract_PermissionName( - string permissionName, string providerName, string providerKey) - { - var key = PermissionGrantCacheItem.CalculateCacheKey(permissionName, providerName, providerKey); - PermissionGrantCacheItem.GetPermissionNameFormCacheKeyOrNull(key).ShouldBe(permissionName); - } - - [Theory] - [InlineData("")] - [InlineData("no-separator-here")] - [InlineData("pn:R,pk:admin")] - public void GetPermissionNameFormCacheKeyOrNull_Should_Return_Null_For_Invalid_Keys(string invalidKey) - { - PermissionGrantCacheItem.GetPermissionNameFormCacheKeyOrNull(invalidKey).ShouldBeNull(); - } } diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/ResourcePermissionGrantCacheItem_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/ResourcePermissionGrantCacheItem_Tests.cs index f4c65f0d7a..1d7b4ea12d 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/ResourcePermissionGrantCacheItem_Tests.cs +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/ResourcePermissionGrantCacheItem_Tests.cs @@ -12,26 +12,4 @@ public class ResourcePermissionGrantCacheItem_Tests ResourcePermissionGrantCacheItem.GetPermissionNameFormCacheKeyOrNull(key).ShouldBe("aaa"); ResourcePermissionGrantCacheItem.GetPermissionNameFormCacheKeyOrNull("aaabbbccc").ShouldBeNull(); } - - [Theory] - [InlineData("MyModule.Users.Create", "R", "admin")] - [InlineData("AbpIdentity.Users", "U", "550e8400-e29b-41d4-a716-446655440000")] - [InlineData("Permission.With.Many.Dots", "T", "tenant-key-123")] - [InlineData("Simple", "R", "")] - public void GetPermissionNameFormCacheKeyOrNull_Should_Extract_PermissionName( - string permissionName, string providerName, string providerKey) - { - var key = ResourcePermissionGrantCacheItem.CalculateCacheKey( - permissionName, TestEntityResource.ResourceName, TestEntityResource.ResourceKey1, providerName, providerKey); - ResourcePermissionGrantCacheItem.GetPermissionNameFormCacheKeyOrNull(key).ShouldBe(permissionName); - } - - [Theory] - [InlineData("")] - [InlineData("no-separator-here")] - [InlineData("rn:res,rk:key,pn:R,pk:admin")] - public void GetPermissionNameFormCacheKeyOrNull_Should_Return_Null_For_Invalid_Keys(string invalidKey) - { - ResourcePermissionGrantCacheItem.GetPermissionNameFormCacheKeyOrNull(invalidKey).ShouldBeNull(); - } }