配置
全局仅一个单例,保存一组配置信息,一般直接在模块的预启动事件中赋值or修改。没有Scope划分,无论租户还是房东亦或者用户读取的值都不会有差异。每个模块都可以扩展这个配置。
设置
- 它没有层级关系,是扁平结构。SettingProvider
- 同一项设置可以为应用、每个租户、甚至每个用户设置不同的值。
- 在客户端(Javascript),我们可以使用abp.settings命名空间来获取设置的当前值(属性isVisibleToClients == true时)。
- 服务器端通过SettingManager取值,通过SettingDefinitionManager获取默认值等
版本/功能
版本配备功能。
应用可以有不同的版本,从而提供不同价格和功能选项给租户。
功能与设置相比:
- 可以是树状的层级结构。FeatureProvider
- 也有Scope,但只有应用和租户两级。
- RequiresFeature特性,FeatureChecker 检测当前租户是否可以开启了某功能,从而为每个租户实现定制,相当于租户的权限系统。
- 在客户端(Javascript),我们可以使用abp.features命名空间来获取功能的当前值。
- 服务器端通过IFeatureManager遍历查找
权限
用来验证一个用户是否允许应用里的某些指定操作,在一定程度上和Feature有些像。
- 可以是树状的层级结构。AuthorizationProvider
- 权限有一个属性DependedFeature,用来表明一个对Feature的依赖,所以这个许可只有在满足Feature(特色)依赖时才会被允许
- AbpAuthorize特性,AbpAllowAnonymous特性,IPermissionChecker
- Razor视图验证权限 @if (IsGranted("Administration.UserManagement.CreateUser"))
- 客户端验证权限 abp.auth.isGranted('Administration.UserManagement.CreateUser');
- 服务器端通过IPermissionManager遍历查找