第22章 本地身份认证方式(也被称为:Cookie身份认证方式)登录实现

 

080 NopAuthenticationDefaults、CustomerLoggedOutEvent、IModelAttribute、NopResourceDisplayNameAttribute、LoginModel

    NopAuthenticationDefaults类,通过该类所定义的常量,为当前程序中的身份认证操作的实现提供相应的数据值。

    CustomerLoggedOutEvent类,“EventPublisher.PublishAsync”方法通过调用该类的实例,自动的从静态缓存数据库/分布式缓存数据库中,移除用户实体的一些缓存实例(不管这些缓存实列是否已经达到相应的缓存时间)。

    注意:

    由于当前程序中并没有为该事件类,定义继承于IConsumer接口的具体实现类,所以当前程序并不能通过用户注销事件来触发,自动的从静态缓存数据库/分布式缓存数据库中,移除与用户相关实例的缓存数据。    IModelAttribute接口,继承于该接口的具体实现类的标记实例,用于把页面上用于验证用户输入数据的错误信息由默认英文,转换为指定的本地化语言(这里特指:简体中文,如果当前程序没有持久化存储指定的本地言语的静态文件,则继续使用默认的英文显示错误信息)。

    NopResourceDisplayNameAttribute类,继承于IModelAttribute接口,该类的标记实例,用于把页面上用于验证用户输入数据的错误信息由默认英文,转换为指定的本地化语言(这里特指:简体中文,如果当前程序没有持久化存储指定的本地言语的静态文件,则继续使用默认的英文显示错误信息)。

    LoginModel类,该类及其属性成员在程序执行时,用于当前程序和登录页面之间数据的交互和输入验证操作。

081 AuthenticationMiddleware、AuthenticationStartup、AuthorizationStartup

    AuthenticationMiddleware类,自定义1个身份认证管道中间件,为当前程序集成(安装)身份认证功能提供支撑。

    AuthenticationStartup类,把自定义身份认证中间件,集成(安装)到.NetCore框架的内置管道和依赖注入中间件实例中,为当前程序中添加相应的身份认证功能。

    AuthorizationStartup类,把自定义授权证中间件,集成(安装)到.NetCore框架的内置管道和依赖注入中间件实例中,为当前程序中添加相应的授权功能。

082 IAuthenticationService、CookieAuthenticationService、ICustomerModelFactory、CustomerModelFactory、CustomerController

    IAuthenticationService接口,继承于该接口的具体实现类,通过默认身份认证方式(也被称为:Cookie身份认证方式),定义了登录/注销操作的具体实现。

CookieAuthenticationService类,继承于IAuthenticationService接口,该类为通过默认身份认证方式(也被称为:Cookie身份认证方式) ,定义了登录/注销操作的具体实现。

ICustomerModelFactory接口,继承于该接口的具体实现类,用来为一些与用户相关的模型类,设置具有默认的数据值的1个实例,即在与用户相关的页面中,显示经过管理员或用户设置过的:输入控件中设置默认数据、页面中的默认控件和主题样式。

    CustomerModelFactory类,继承于ICustomerModelFactory接口,该类用来为一些与用户相关的模型类,设置具有默认的数据值的1个实例,即在与用户相关的页面中,显示经过管理员或用户设置过的:输入控件中设置默认数据、页面中的默认控件和主题样式。

    注意:

    对控件和主题样式进行自定义设置是“nopCommerce”身为模板类程序的需求。

    CustomerController类,该类用来把与用户相关的数据,通过指定页面在客户端浏览器中进行显示,或把用户在指定页面输入的数据信息提交到服务端的服务器中。

1、重构Nop.Web.Framework.Infrastructure.DependencyRegistrar.Register方法,去除services.AddScoped<IAuthenticationService, CookieAuthenticationService>();语句前的注释。

2、重构Nop.Web.Controllers.DependencyRegistrar.Register方法,去除services.AddScoped<Factories.ICustomerModelFactory, Factories.CustomerModelFactory>();语句前的注释。

3、重构Nop.Services.Customers.CustomerRegistrationService.SignInCustomerAsync方法。

4、重构Nop.Core.IworkContext接口和Nop.Web.Framework.WebWorkContext类。

    <1>、重构Nop.Web.Framework.WebWorkContex. GetCurrentCustomerAsync方法。

    <2>、去除Nop.Core.IworkContext接口和Nop.Web.Framework.WebWorkContext类中,SetCurrentCustomerAsync方法前的所有注释。

5、去除Nop.Web.Framework.Infrastructure.Extensions.ApplicationBuilderExtensions.UseNopAuthentication方法前的所有注释。

6、去除Nop.Web.Framework.Infrastructure.Extensions. ServiceCollectionExtensions.AddNopAuthentication方法中的大部分注释。

7、在Nop.Web.Areas.Admin.Controllers.HomeController.Index方法上定义[Authorize]标记实例

注意:

如果用户通过本地身份认证方式(也被称为:Cookie身份认证方式),实现成功登录操作,且把登录数据持久化到客户端浏览器的Cookies文件中时,如果在限定时间内直接请求授权页面,那么客户端浏览器会把Cookies文件中的Cookie数据信息传回服务端,服务端就可以通过Cookie中的信息确认用户信息了,实现了在限定时间内不用重新执行登录操作,从而直接访问授权页面的操作。

8、按F5,执行程序点击“后台首页”,将自动跳转到“登录”页面,输入用户名和密码,自动跳转到“首页”后,再次点击“后台首页”,将会自动跳转到“后台首页”授权页面;在“登录”页面中如果没有选择“记住我”复选框,在关闭浏览器后,再按F5,执行程序点击“后台首页”,则将前面的操作重新执行一边;如选择“记住我”复选框,击“后台首页”,将不需要再执行登录操作,会直接打开“后台首页”授权页面。

对以上功能更为具体实现和注释见22-01-28-022_Nop_4.40.4(本地身份认证方式登录实现)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值