Activities of "duyan11110"

Hi,

Thanks for your suggestion. I inject IDistributedCache<PermissionGrantCacheItem> and call it's RemoveManyAsync method => it works perfectly now.

Hi,

It works now. The Id need to be uppercase: .RequirePermissions(menuItem.Id.ToString().ToUpper()), but when I refresh the page, the granted menus are not displayed immediately. I have to manually clear redis cache. So, which is the right method I have to call to refresh the cache when changing permissions?

Hi,

I don't see any error.

[administration-service_76245987-4]: [13:30:52 DBG] Executed AbpApplicationConfigurationAppService.GetAsync().
[administration-service_76245987-4]: [13:30:52 INF] Executed action method Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController.GetAsync (Volo.Abp.AspNetCore.Mvc), returned result Microsoft.AspNetCore.Mvc.ObjectResult in 103.9099ms.
[administration-service_76245987-4]: [13:30:52 INF] Executing ObjectResult, writing value of type 'Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto'.
[administration-service_76245987-4]: [13:30:52 INF] Executed action Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController.GetAsync (Volo.Abp.AspNetCore.Mvc) in 106.7414ms
[administration-service_76245987-4]: [13:30:52 INF] Executed endpoint 'Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController.GetAsync (Volo.Abp.AspNetCore.Mvc)'
[administration-service_76245987-4]: [13:30:52 INF] Request finished HTTP/1.1 GET http://mzh.mhibs.administrationservice.httpapi.host:7001/api/abp/application-configuration?IncludeLocalizationResources=False&api-version=1.0 - - - 200 - application/json;+charset=utf-8 110.7096ms
[administration-service_76245987-4]: [13:30:52 INF] Request starting HTTP/1.1 GET http://mzh.mhibs.administrationservice.httpapi.host:7001/api/abp/application-localization?CultureName=en&OnlyDynamics=True&api-version=1.0 - -
[administration-service_76245987-4]: [13:30:52 INF] Executing endpoint 'Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationLocalizationController.GetAsync (Volo.Abp.AspNetCore.Mvc)'
[administration-service_76245987-4]: [13:30:52 INF] Route matched with {area = "abp", action = "Get", controller = "AbpApplicationLocalization", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationDto] GetAsync(Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationRequestDto) on controller Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationLocalizationController (Volo.Abp.AspNetCore.Mvc).
[administration-service_76245987-4]: [13:30:52 INF] Executing action method Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationLocalizationController.GetAsync (Volo.Abp.AspNetCore.Mvc) - Validation state: Valid
[administration-service_76245987-4]: [13:30:52 INF] Executed action method Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationLocalizationController.GetAsync (Volo.Abp.AspNetCore.Mvc), returned result Microsoft.AspNetCore.Mvc.ObjectResult in 132.7568ms.
[administration-service_76245987-4]: [13:30:52 INF] Executing ObjectResult, writing value of type 'Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationDto'.
[administration-service_76245987-4]: [13:30:52 INF] Executed action Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationLocalizationController.GetAsync (Volo.Abp.AspNetCore.Mvc) in 134.5931ms
[administration-service_76245987-4]: [13:30:52 INF] Executed endpoint 'Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationLocalizationController.GetAsync (Volo.Abp.AspNetCore.Mvc)'
[administration-service_76245987-4]: [13:30:52 INF] Request finished HTTP/1.1 GET http://mzh.mhibs.administrationservice.httpapi.host:7001/api/abp/application-localization?CultureName=en&OnlyDynamics=True&api-version=1.0 - - - 200 - application/json;+charset=utf-8 138.5244ms
[administration-service_76245987-4]: [13:30:52 INF] Request starting HTTP/1.1 GET http://mzh.mhibs.administrationservice.httpapi.host:7001/api/administration-service/menu-item/menu?api-version=1.0 - -
[administration-service_76245987-4]: [13:30:53 DBG] PermissionStore.GetCacheItemAsync: pn:U,pk:67382431-cb1b-e66f-3384-3a0a1b180a20,n:AdministrationService.MenuItems
[administration-service_76245987-4]: [13:30:53 DBG] Found in the cache: pn:U,pk:67382431-cb1b-e66f-3384-3a0a1b180a20,n:AdministrationService.MenuItems
[administration-service_76245987-4]: [13:30:53 DBG] PermissionStore.GetCacheItemAsync: pn:R,pk:admin,n:AdministrationService.MenuItems
[administration-service_76245987-4]: [13:30:53 DBG] Found in the cache: pn:R,pk:admin,n:AdministrationService.MenuItems
[administration-service_76245987-4]: [13:30:53 DBG] PermissionStore.GetCacheItemAsync: pn:C,pk:Web.DockerHttpCore,n:AdministrationService.MenuItems
[administration-service_76245987-4]: [13:30:53 DBG] Found in the cache: pn:C,pk:Web.DockerHttpCore,n:AdministrationService.MenuItems
[administration-service_76245987-4]: [13:30:53 INF] Executing endpoint 'MZH.MHIBS.AdministrationService.Menus.MenuItemAppService.GetAllMenuAsync (MZH.MHIBS.AdministrationService.Application)'
[administration-service_76245987-4]: [13:30:53 INF] Route matched with {action = "GetAllMenu", controller = "MenuItem", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[System.Collections.Generic.List`1[MZH.MHIBS.AdministrationService.Menus.MenuItemDto]] GetAllMenuAsync() on controller MZH.MHIBS.AdministrationService.Menus.MenuItemAppService (MZH.MHIBS.AdministrationService.Application).
[administration-service_76245987-4]: [13:30:53 INF] Executing action method MZH.MHIBS.AdministrationService.Menus.MenuItemAppService.GetAllMenuAsync (MZH.MHIBS.AdministrationService.Application) - Validation state: Valid
[administration-service_76245987-4]: [13:30:53 INF] Executed action method MZH.MHIBS.AdministrationService.Menus.MenuItemAppService.GetAllMenuAsync (MZH.MHIBS.AdministrationService.Application), returned result Microsoft.AspNetCore.Mvc.ObjectResult in 4.5297ms.
[administration-service_76245987-4]: [13:30:53 DBG] Added 0 entity changes to the current audit log
[administration-service_76245987-4]: [13:30:53 INF] Executing ObjectResult, writing value of type 'System.Collections.Generic.List`1[[MZH.MHIBS.AdministrationService.Menus.MenuItemDto, MZH.MHIBS.AdministrationService.Application.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'.
[administration-service_76245987-4]: [13:30:53 INF] Executed action MZH.MHIBS.AdministrationService.Menus.MenuItemAppService.GetAllMenuAsync (MZH.MHIBS.AdministrationService.Application) in 9.1316ms
[administration-service_76245987-4]: [13:30:53 INF] Executed endpoint 'MZH.MHIBS.AdministrationService.Menus.MenuItemAppService.GetAllMenuAsync (MZH.MHIBS.AdministrationService.Application)'
[administration-service_76245987-4]: [13:30:53 DBG] Added 0 entity changes to the current audit log
[administration-service_76245987-4]: [13:30:53 INF] Request finished HTTP/1.1 GET http://mzh.mhibs.administrationservice.httpapi.host:7001/api/administration-service/menu-item/menu?api-version=1.0 - - - 200 - application/json;+charset=utf-8 20.4294ms
[administration-service_76245987-4]: [13:30:53 INF] Request starting HTTP/1.1 GET http://mzh.mhibs.administrationservice.httpapi.host:7001/api/administration-service/menu-item/menu?api-version=1.0 - -
[administration-service_76245987-4]: [13:30:53 DBG] PermissionStore.GetCacheItemAsync: pn:U,pk:67382431-cb1b-e66f-3384-3a0a1b180a20,n:AdministrationService.MenuItems
[administration-service_76245987-4]: [13:30:53 DBG] Found in the cache: pn:U,pk:67382431-cb1b-e66f-3384-3a0a1b180a20,n:AdministrationService.MenuItems
[administration-service_76245987-4]: [13:30:53 DBG] PermissionStore.GetCacheItemAsync: pn:R,pk:admin,n:AdministrationService.MenuItems
[administration-service_76245987-4]: [13:30:53 DBG] Found in the cache: pn:R,pk:admin,n:AdministrationService.MenuItems
[administration-service_76245987-4]: [13:30:53 DBG] PermissionStore.GetCacheItemAsync: pn:C,pk:Web.DockerHttpCore,n:AdministrationService.MenuItems
[administration-service_76245987-4]: [13:30:53 DBG] Found in the cache: pn:C,pk:Web.DockerHttpCore,n:AdministrationService.MenuItems
[administration-service_76245987-4]: [13:30:53 INF] Executing endpoint 'MZH.MHIBS.AdministrationService.Menus.MenuItemAppService.GetAllMenuAsync (MZH.MHIBS.AdministrationService.Application)'
[administration-service_76245987-4]: [13:30:53 INF] Route matched with {action = "GetAllMenu", controller = "MenuItem", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[System.Collections.Generic.List`1[MZH.MHIBS.AdministrationService.Menus.MenuItemDto]] GetAllMenuAsync() on controller MZH.MHIBS.AdministrationService.Menus.MenuItemAppService (MZH.MHIBS.AdministrationService.Application).
[administration-service_76245987-4]: [13:30:53 INF] Executing action method MZH.MHIBS.AdministrationService.Menus.MenuItemAppService.GetAllMenuAsync (MZH.MHIBS.AdministrationService.Application) - Validation state: Valid
[administration-service_76245987-4]: [13:30:53 INF] Executed action method MZH.MHIBS.AdministrationService.Menus.MenuItemAppService.GetAllMenuAsync (MZH.MHIBS.AdministrationService.Application), returned result Microsoft.AspNetCore.Mvc.ObjectResult in 5.0168ms.
[administration-service_76245987-4]: [13:30:53 DBG] Added 0 entity changes to the current audit log
[administration-service_76245987-4]: [13:30:53 INF] Executing ObjectResult, writing value of type 'System.Collections.Generic.List`1[[MZH.MHIBS.AdministrationService.Menus.MenuItemDto, MZH.MHIBS.AdministrationService.Application.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'.
[administration-service_76245987-4]: [13:30:53 INF] Executed action MZH.MHIBS.AdministrationService.Menus.MenuItemAppService.GetAllMenuAsync (MZH.MHIBS.AdministrationService.Application) in 8.5125ms
[administration-service_76245987-4]: [13:30:53 INF] Executed endpoint 'MZH.MHIBS.AdministrationService.Menus.MenuItemAppService.GetAllMenuAsync (MZH.MHIBS.AdministrationService.Application)'
[administration-service_76245987-4]: [13:30:53 DBG] Added 0 entity changes to the current audit log
[administration-service_76245987-4]: [13:30:53 INF] Request finished HTTP/1.1 GET http://mzh.mhibs.administrationservice.httpapi.host:7001/api/administration-service/menu-item/menu?api-version=1.0 - - - 200 - application/json;+charset=utf-8 24.7428ms
[administration-service_76245987-4]: [13:30:53 INF] Request starting HTTP/1.1 GET http://mzh.mhibs.administrationservice.httpapi.host:7001/api/administration-service/menu-item/menu?api-version=1.0 - -
[administration-service_76245987-4]: [13:30:53 DBG] PermissionStore.GetCacheItemAsync: pn:U,pk:67382431-cb1b-e66f-3384-3a0a1b180a20,n:AdministrationService.MenuItems
[administration-service_76245987-4]: [13:30:53 DBG] Found in the cache: pn:U,pk:67382431-cb1b-e66f-3384-3a0a1b180a20,n:AdministrationService.MenuItems
[administration-service_76245987-4]: [13:30:53 DBG] PermissionStore.GetCacheItemAsync: pn:R,pk:admin,n:AdministrationService.MenuItems
[administration-service_76245987-4]: [13:30:53 DBG] Found in the cache: pn:R,pk:admin,n:AdministrationService.MenuItems
[administration-service_76245987-4]: [13:30:53 DBG] PermissionStore.GetCacheItemAsync: pn:C,pk:Web.DockerHttpCore,n:AdministrationService.MenuItems
[administration-service_76245987-4]: [13:30:53 DBG] Found in the cache: pn:C,pk:Web.DockerHttpCore,n:AdministrationService.MenuItems
[administration-service_76245987-4]: [13:30:53 INF] Executing endpoint 'MZH.MHIBS.AdministrationService.Menus.MenuItemAppService.GetAllMenuAsync (MZH.MHIBS.AdministrationService.Application)'
[administration-service_76245987-4]: [13:30:53 INF] Route matched with {action = "GetAllMenu", controller = "MenuItem", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[System.Collections.Generic.List`1[MZH.MHIBS.AdministrationService.Menus.MenuItemDto]] GetAllMenuAsync() on controller MZH.MHIBS.AdministrationService.Menus.MenuItemAppService (MZH.MHIBS.AdministrationService.Application).
[administration-service_76245987-4]: [13:30:53 INF] Executing action method MZH.MHIBS.AdministrationService.Menus.MenuItemAppService.GetAllMenuAsync (MZH.MHIBS.AdministrationService.Application) - Validation state: Valid
[administration-service_76245987-4]: [13:30:53 INF] Executed action method MZH.MHIBS.AdministrationService.Menus.MenuItemAppService.GetAllMenuAsync (MZH.MHIBS.AdministrationService.Application), returned result Microsoft.AspNetCore.Mvc.ObjectResult in 5.5035ms.
[administration-service_76245987-4]: [13:30:53 DBG] Added 0 entity changes to the current audit log
[administration-service_76245987-4]: [13:30:53 INF] Executing ObjectResult, writing value of type 'System.Collections.Generic.List`1[[MZH.MHIBS.AdministrationService.Menus.MenuItemDto, MZH.MHIBS.AdministrationService.Application.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'.
[administration-service_76245987-4]: [13:30:53 INF] Executed action MZH.MHIBS.AdministrationService.Menus.MenuItemAppService.GetAllMenuAsync (MZH.MHIBS.AdministrationService.Application) in 9.3429ms
[administration-service_76245987-4]: [13:30:53 INF] Executed endpoint 'MZH.MHIBS.AdministrationService.Menus.MenuItemAppService.GetAllMenuAsync (MZH.MHIBS.AdministrationService.Application)'
[administration-service_76245987-4]: [13:30:53 DBG] Added 0 entity changes to the current audit log
[administration-service_76245987-4]: [13:30:53 INF] Request finished HTTP/1.1 GET http://mzh.mhibs.administrationservice.httpapi.host:7001/api/administration-service/menu-item/menu?api-version=1.0 - - - 200 - application/json;+charset=utf-8 19.2255ms

Hi,

How to reload granted permissions? I call await _dynamicPermissionDefinitionStore.GetPermissionsAsync(); as your suggestion but not work

private ApplicationMenuItem CreateApplicationMenuItem(MenuItemDto menuItem)
{
    return new ApplicationMenuItem(
        menuItem.DisplayName,
        menuItem.DisplayName,
        menuItem.Url,
        menuItem.Icon,
        menuItem.Order,
        menuItem.Target,
        menuItem.ElementId,
        menuItem.CssClass
    ).RequirePermissions(menuItem.Id.ToString());
}

When I remove .RequirePermissions(menuItem.Id.ToString()) the dynamic menu items show correctly

Hi, I have to add reference to HttpClient proj of IdentityService and configure RemoteService in appsettings.json, right?

Hi,

What is the best way to get role list from IdentityService inAdministraionService?

Hi,

OK. Thanks. I will try it. But I need your guide when inserting data into permission related tables. Is there anything I have to pay attention?

Hi,

Here is my idea. Please advice if it is feasible.

  1. Create new table: MenuItems (Id, Url, ...)
  2. After saving menu items I will create all permission names for those menu items, with permission name = Id of menu item. These permission names will be under "MenuItem" permission group
  3. Create new page to set permissions of menu items for a role and save into AbpPermissionGrant
  4. Loading dynamic menu items with permissions checking will be like this: (copy from CMS Kit module for example)
private async Task ConfigureMainMenuAsync(MenuConfigurationContext context)
    {
        var featureChecker = context.ServiceProvider.GetRequiredService<IFeatureChecker>();
        if (GlobalFeatureManager.Instance.IsEnabled<MenuFeature>() && await featureChecker.IsEnabledAsync(CmsKitFeatures.MenuEnable))
        {
            var menuAppService = context.ServiceProvider.GetRequiredService<IMenuItemPublicAppService>();

            var menuItems = await menuAppService.GetListAsync();

            if (!menuItems.IsNullOrEmpty())
            {
                foreach (var menuItemDto in menuItems.Where(x => x.ParentId == null && x.IsActive))
                {
                    AddChildItems(menuItemDto, menuItems, context.Menu);
                }
            }
        }
    }

    private void AddChildItems(MenuItemDto menuItem, List<MenuItemDto> source, IHasMenuItems parent = null)
    {
        var applicationMenuItem = CreateApplicationMenuItem(menuItem);

        foreach (var item in source.Where(x => x.ParentId == menuItem.Id && x.IsActive))
        {
            AddChildItems(item, source, applicationMenuItem);
        }

        parent?.Items.Add(applicationMenuItem);
    }

    private ApplicationMenuItem CreateApplicationMenuItem(MenuItemDto menuItem)
    {
        return new ApplicationMenuItem(
            menuItem.DisplayName,
            menuItem.DisplayName,
            menuItem.Url,
            menuItem.Icon,
            menuItem.Order,
            menuItem.Target,
            menuItem.ElementId,
            menuItem.CssClass
        ).RequirePermissions(menuItem.Id.ToString());
    }

Hi,

Thanks for your code. But do I have to create permission name for each menu item before creating that menu item? I want to set permissions dynamically according to creating menu items.

  • ABP Framework version: v7.3.0
  • UI Type: MVC
  • Database System: EF Core (SQL Server)
  • Tiered (for MVC) or Auth Server Separated (for Angular): yes
  • Exception message and full stack trace:
  • Steps to reproduce the issue: I want to set permissions for dynamic menu items. I can mimic your CMS Kit module to create dynamic menu items but don't know how to set permissions for them. Please suggest me steps to achieve that. Thank you.
Showing 61 to 70 of 93 entries
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.3.0-preview. Updated on February 27, 2026, 05:41
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.