Activities of "duyan11110"

Hi,

Can I use RefreshManyAsync method of IDistributedCache<PermissionGrantCacheItem> to refresh the cache whenever I change permissions?

I don't understand why RemoveManyAsync not work when deploying on K8s?

Hi,

Removing distributed cache with above method call when deploying on K8s does not affect immediately. The cache is refreshed after 5 minutes (I guess). Is there anything I have to do? How to remove old cache immediately after changing permissions?

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());
    }
顯示 39 個紀錄的 11 到 20 個.
Made with ❤️ on ABP v8.2.0-preview Updated on 3月 25, 2024, 15:11