使用 ASP.NET 样板从内存中缓存刷新权限



当我通过运行 SQL 更新脚本为数据库中的用户显式设置权限时,具有最新授权的特定权限不会反映在系统中。但是,当我回收IIS进程或重新生成解决方案时,它似乎只会更新。

看起来框架正在使用某种内存存储来检查权限。

ABP中是否有"强制刷新"函数,我可以调用该函数以使用数据库中的最新权限刷新内存中存储?

奇怪的是,当通过前端设置权限时,权限确实按预期工作而无需IIS回收,因此它肯定会调用某种函数来更新其缓存。

您可以注入ICacheManager并清除缓存:

public void ForceRefresh()
{
    _cacheManager.GetUserPermissionCache().Clear();
 // _cacheManager.GetRolePermissionCache().Clear();
}

设置管理器在服务器端缓存设置,因此不应使用存储库或数据库更新查询直接更改设置值。

如果您的第三方应用程序想要更改设置,则应通过 WebAPI 方法执行此操作。因此,您需要创建一个应用程序服务并添加一个类似于 ChangeSettingValue({settingName, settingValue}) 的方法。

在此应用服务中,注入ISettingManager,并使用ChangeSettingForApplicationAsyncChangeSettingForTenantAsyncChangeSettingForUserAsync方法(和同步版本(分别更改应用程序、租户和用户的设置。

请参阅相关文档> https://aspnetboilerplate.com/Pages/Documents/Setting-Management

相关内容

  • 没有找到相关文章

最新更新