柠檬网络科技网站建设,wordpress 增加导航,玫琳凯网站建设与推广方案,温州网站建设 首选国鼎网络好0056 PermissionRecord、PermissionRecordCustomerRoleMapping PermissionRecord类#xff0c;一个权限纪录类#xff0c;通过该实体类及其属性成员实现当前程序与数据库中指定表之间的数据交互操作。 PermissionRecordCustomerRoleMapping类#xff0c;一个权限纪录客户角色…0056 PermissionRecord、PermissionRecordCustomerRoleMapping PermissionRecord类一个权限纪录类通过该实体类及其属性成员实现当前程序与数据库中指定表之间的数据交互操作。 PermissionRecordCustomerRoleMapping类一个权限纪录客户角色映射实体类通过该实体类及其属性成员实现当前程序与数据库中指定表之间的数据交互操作。
0057 PermissionRecordBuilder、PermissionRecordCustomerRoleMappingBuilder PermissionRecordBuilder类该类通过对父类中同名方法进行覆写对权限纪录实体类、属性成员进行约束关系和规则进行相应的定义并把这些约束有关系和规则的定义映射到相应的数据库中新生成的一个权限纪录表及其字段上。 PermissionRecordCustomerRoleMappingBuilder类该类通过对父类中同名方法进行覆写对权限纪录客户角色实体类、属性成员进行约束关系和规则进行相应的定义并把这些约束有关系和规则的定义映射到相应的数据库中新生成的一个权限纪录客户角色映射表及其字段上。
1、重构Nop.Data.Migrations.SchemaMigration类通过本次重构在指定的数据库软件的相应数据库中自动生成权限纪录表、权限纪录客户角色映射表。
2、重构Nop.Data.Mapping.BaseNameCompatibility类通过本次重构使用数据库中一些指定的表名和字段名由于程序中实体名和属性成员名进行默认的映射生成,变更为由该类中所定义的常量字符串,进行映射生成。如果不考虑概率极低的名称冲突状况的发生该类及其所有定义都可以被删除并不影响程序的正常执行。
0058 IPermissionProvider、StandardPermissionProvider StandardPermissionProvider类继承于IPermissionProvider接口通过该类的定义对权限纪录实体和权限纪录客户角色映射实体设置了一些默认的实例为把这些实例中的数据值持久化到数据库的权限纪录表和权限纪录客户角色映射表中提供支撑。
注意
1、可能权限权限纪录实体和权限纪录客户角色映射所有默认实例的数据值持久化到数据库的权限纪录表和权限纪录客户角色映射表的定义实现相对比较复杂所以nopCommerce开发者并没有把这些定义实现默认的定义在Nop.Services.Installation.InstallationService类中而是单独在StandardPermissionProvider类中定义实现了这些操作。
2、StandardPermissionProvider类的实例化实现也并没有默认的定义在Nop.Web.Framework.Infrastructure.DependencyRegistrar.Register方法中而是通过Nop.Web.Controllers.InstallController.Index方法中的语句 //获取标准权限提供程序具体实现类的类型实例。 var permissionProviders new ListType { typeof(StandardPermissionProvider) }; foreach (var providerType in permissionProviders) { //获取标准权限提供程序实例。 var provider (IPermissionProvider)Activator.CreateInstance(providerType); //把标准权限提供程序实例中的默认数据全部持久化到权限纪录表和权限纪录客户角色映射表中。 await EngineContext.Current.ResolveIPermissionService().InstallPermissionsAsync(provider); }
实现了StandardPermissionProvider类的实例化操作也不知道是nopCommerce开发者对自己开发技能的炫耀还可能是StandardPermissionProvider类定义实现的特殊性nopCommerce开发者综合取舍后的必然选择本人更希望是后者。
3、重构Nop.Services.Customers.NopCustomerServicesDefaults类通过本次重构在该类设置一个指定的客户角色实体的缓存键字符串该缓存键对应一个指定的客户角色实体实例。
4、重构Nop.Services.Customers.CustomerService类及其Nop.Services.Customers.ICustomerService接口。
0059 NopSecurityDefaults、IPermissionService、PermissionService NopSecurityDefaults类该类对其属性成员实例设置一些常量为安全相关类的定义实现提供一些实例数据的支撑。
PermissionService类继承于IPermissionService接口通过该类中的定义实现了页面、程序和数据库指定表之间权限纪录和权限纪录客户角色映射相关数据信息的交互操作。
注意
为了简化实现PermissionService类继承于IPermissionService接口中大量的实现方法被删除。
5、重构Nop.Web.Framework.Infrastructure.DependencyRegistrar.Register方法添加语句 //通过.NetCore框架依赖注入容器实例的指定API方法对权限纪录服务具体实现类进行依赖注入操作。 services.AddScopedIPermissionService, PermissionService();
6、重构Nop.Web.Controllers.InstallController.Index方法通过本次重构在程序被执行时会把当前程序中定义的所有默认数据值全部持久化到权限纪录表和权限纪录客户角色映射表中。 7、按F5执行程序在指定数据库自动生成程序到权限纪录表和权限纪录客户角色映射表及其所有默认数据值并且所有后台页面正常显示。 对以上功能更为具体实现和注释见21-08-21_Nop_4.40.3(019_权限的定义实现所有页面正常显示)。