本章将按照自顶向下的开发模式,来解释“nopCommerce”程序是怎样实现对COOKIE和Session的支持的
0048、LoginModel
(1) 、LoginModel类是登录视图模型类,用于程序与相应浏览器页面的数据交互操作。
(2) 、定义Controllers.CustomerController.Login方法。
(3) 、定义Views/Customer/ Login.cshtml视图。
(4) 、修改Views/Shared/_Layout.cshtml视图。
(5) 、按F5执行程序,查看Views/Customer/ Login.cshtml视图中的COOKIEs。
0049、AuthenticationStartup
(6) 、AuthenticationStartup类是“nopCommerce”程序对.NetCore框架中内置身份认证权限依赖注入和管道中间件方法的自定义和扩展。COOKIE与Session实现依赖于.NetCore框架中内置身份认证权限间件,所以要先在“nopCommerce”程序中实现内置身份认证权限间件。
在“nopCommerce”程序中内置身份认证权限间件,需要与大量的其它类型的实例进行耦合才能实现,所以先实现依赖注入操作所需要的其它类型的定义。
(7) 、定义Nop.Web.Framework.Infrastructure.Extensions.ServiceCollectionExtensions.AddNopAuthentication自定义依赖注入中间件方法。
0050、NopAuthenticationDefaults、NopHttpDefaults、NopCOOKIEDefaults、SessionExtensions
(8)、NopAuthenticationDefaults类,通过该类所定义一些身份认证的默认常量,为身份认证操作提供数据支撑。
(9)、NopHttpDefaults类,该类规定了客户端浏览器访问当前程序所必须遵循的传输协议及其准备的参数实例。
(10)、NopCOOKIEDefaults类,通过该类所定义的COOKIE拼接/构建字符串,来拼接/构建一个指定的COOKIE名称字符串。
(11)、SessionExtensions类, 该类是把指定类型的一个实例及其键(很可能是一个指定的COOKIE名称字符串)键/值对,以“Session”实例的形式持久化到服务器端;或从服务器端获取“Session”实例来获取指定类型的一个实例及其键(很可能是一个指定的COOKIE名称字符串)键/值对。
(12) 、定义Nop.Web.Framework.Infrastructure.Extensions.ApplicationBuilderExtensions.UseNopAuthentication自定义管道中间件方法。
0051、AuthenticationMiddleware
(13)、AuthenticationMiddleware类,该类在.NetCore框架内置身份认证管道中间件基础上,进行了自定义和扩展。
对以上功能更为具体实现和注释见21-06-30_Nop4.4(022_内置身份认证权限启动定义的具体实现完成,构建后无语法错误产生)