ABP框架 功能管理
ABP为功能检查使用强大的动态方法拦截,所以在方法上使用RequiresFeature特性有些限制:
同时,可用于:
使用 IFeatureChecker 我们可以注入IFeatureChecker,并使用它手动检查一个功能(它被自动注入到应用服务,Mvc和Web Api控制器,并被自动使用)。
IsEnabled 简单的检查一个给定的功能是否可用,如: public async Task<FileDto> GetReportToExcel(...) { if (await FeatureChecker.IsEnabledAsync("ExportToExcel")) { throw new AbpAuthorizationException("You don't have this feature: ExportToExcel"); } ... }
IsEnabledAsync和其它方法同样有异步版本。 当然,IsEnabled方法应当被Boolean类型的功能使用,否则,你会得到异常。 如果你只是想检查一个功能,并抛出异常,如上面例子所示那样,你可以使用CheckEnabled方法。
GetValue 获取一个值类型功能的当前值,例如: var createdTaskCountInThisMonth = GetCreatedTaskCountInThisMonth(); if (createdTaskCountInThisMonth >= FeatureChecker.GetValue("MaxTaskCreationLimitPerMonth").To<int>()) { throw new AbpAuthorizationException("You exceed task creation limit for this month, sorry :("); }
FeatureChecker方法也提供了为一个指定tenantId工作的功能,不只是为当前tenantId。
客户端 在客户端(Javascript),我们可以使用abp.features命名空间来获取功能的当前值。
isEnabled var isEnabled = abp.features.isEnabled('SampleBooleanFeature');
getValue var value = abp.features.getValue('SampleNumericFeature');
功能管理器 如果你需要用到功能的定义,你可以注入IFeatureManager并使用它。
对版本的一个提示 ABP框架没有一个内容的版本系统,因为如此一个系统需要一个数据库(存储版本,版本功能,租户版本映射...),因此,版本系统在module zero里实现,你可以很容易的使用它并获取一个版本系统,或者你自己实现。
(编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |