第35章 GoogleAuthenticator插件项的定义实现

说明:


    在nopCommerce_4.40.4程序中GoogleAuthenticator认证实际上是:手机端的GoogleAuthenticator应用(app)通过nopCommerce_4.40.4程序调用Google服务器端所发送到浏览器中的二维码图片,通过扫描该二维码图片,绑定已经注册到nopCommerce_4.40.4程序的指定用户(admin@yourStore.com),再次执行登录操作时会直接跳转到https://localhost:44369/multi-factor-verification页面,在该页面中直接输入手机端的GoogleAuthenticator应用(app)所提供的6位数字的验证码(该验证码是定时不断更新的)即可。该认证方式是基于注册用户和手机端的GoogleAuthenticator应用(app)所提供的验证码,两者共同作用的双认证方式,即只有同时通过在本地领证和Google服务器端认证,用户才有权访问后台授权页面。其它说明;“https://blog.csdn.net/weixin_40865248/article/details/100071200

 

 

 

106 MultiFactorAuthenticationSettings、GoogleAuthenticatorSettings、GoogleAuthenticatorDefaults、MultiFactorAuthenticationType、MultiFactorAuthenticationPluginManager、IMultiFactorAuthenticationPluginManager、GoogleAuthenticatorMethod

    MultiFactorAuthenticationSettings类,通过该类及其属性成员实例,把多身份认证插件设置相关的一些默认数据值,并把这些数据值持久化存储到数据库的设置表中,管理员可以修改这些数据值,使当前程序可以根据管理员的需求进行定制。

    GoogleAuthenticatorSettings类,通过该类及其属性成员实例,把 Google身份认证插件设置相关的一些默认数据值,并把这些数据值持久化存储到数据库的设置表中,管理员可以修改这些数据值,使当前程序可以根据管理员的需求进行定制。

    GoogleAuthenticatorDefaults类,通过该类及其属性成员,拼接出相应的GoogleAuthenticator身份认证缓存键字符串常量,为GoogleAuthenticator身份认证缓存项(键/值对)的构建提供数据支撑。

    MultiFactorAuthenticationType枚举,该枚举定义了3身份认证方式"Microsoft Authenticator"(内置插件) / "Google Authenticator/移动端短信身份认证(收费插件)",通过枚举实例选定其中的1种,从而实现双身份认证用户的登录操作。

    MultiFactorAuthenticationPluginManager类,继承于IMultiFactorAuthenticationPluginManager接口,如果当前程序启用了多身份认证插件((Microsoft Authenticator/Google Authenticator(内置插件)/移动端短信身份认证(收费插件)),那么当程序启动时把这些插件所需要数据存储到列表类型的内存中,为当前程序使用这些插件做好提前准备工作。

    IMultiFactorAuthenticationPluginManager接口,如果当前程序启用了多身份认证插件((Microsoft Authenticator/Google Authenticator(内置插件)/移动端短信身份认证(收费插件)),继承于该接口的类那么当程序启动时把这些插件所需要数据存储到列表类型的内存中,为当前程序使用这些插件做好提前准备工作。

    GoogleAuthenticatorMethod类,通过配置持久化设置表中关于GoogleAuthenticator身份认证的数据,把GoogleAuthenticator身份认证功能安装(集成)到当前程序中;或从当产程序中卸载出去。

107 DependencyRegistrar、RouteProvider、GoogleAuthenticatorRecord、GoogleAuthenticatorSchemaMigration、GoogleAuthenticatorService、GoogleAuthenticatorModel、GoogleAuthenticatorSearchModel、GoogleAuthenticatorListModel、AuthModel、TokenModel、ConfigurationModel、GAAuthenticationViewComponent、GAVerificationViewComponent、AuthenticationModelFactory

       DependencyRegistrar类,把定义在注册依赖注入具体实现类Register方法中的,所有自定义接口/抽象类/类与相应的具体实现类,依次注入到.NetCore框架所定义的内置依赖注入容器实例中,为具体实现类的实例化操作提供支撑。

    RouteProvider类,该类主要为Google身份认证插件项中的一些页面与相应控制器/行为其定义映射规则和构建其路由映射关系。

    GoogleAuthenticatorRecord类,通过该类及其属性成员实例,实现当前程序与数据库中Google身份认证纪录表之间的数据交互操作,通过这些数据用于绑定手机端的GoogleAuthenticator应用(app)。

    GoogleAuthenticatorSchemaMigration类,当前类是在当前程序中的内置Google身份认证插件项被启用时,在选定的数据库软件的数据库中,自动生成相应的表及其该表中相应字段的约束规则。

    GoogleAuthenticatorService类,该类实现了Google身份认证纪录实体与Google身份认证纪录表之间的CRUD数据交互操作,同时还定义了1个由手机端的GoogleAuthenticator应用(app)所提供的6位数字的验证码字符串(口令,随时间不断变更密码)的验证操作。

    GoogleAuthenticatorModel纪录,该纪录及其属性成员在程序执行时,用于当前程序和Google身份认证配置页面之间数据的交互操作。

    GoogleAuthenticatorSearchModel纪录,当前纪录可以通过其属性成员实例,实现页面与当前程序进行数据交换,为搜索操作提供数据支撑。

    GoogleAuthenticatorListModel纪录,把浏览器中(同1个页面中的)多个Google身份认证模型实例,存储到列表实例中,该列表实例为向服务器端数据库指定表中提交数据提供支撑。

    AuthModel纪录,当前纪录可以通过其属性成员实例,把指定用户与手机端的GoogleAuthenticator应用(app)进行绑定。

    TokenModel纪录,当前纪录可以通过其属性成员实例,实现页面与当前程序进行数据交换,为用户以双身份认证方式进行登录操作提供数据支撑。

ConfigurationModel纪录,该纪录及其属性成员在程序执行时,用于当前程序和管理区域的Google身份认证页面之间数据的交互和输入验证操作。

    GAAuthenticationViewComponent类,通过调用“~/Plugins/MultiFactorAuth.GoogleAuthenticator/Views/Customer/GAAuthentication.cshtml”视图页面,在“https://localhost:44369/customer/providerconfig?providerSysName=MultiFactorAuth.GoogleAuthenticator”页面上显示组件:GoogleAuthenticator身份认证插件的二维码图片。

    GAVerificationViewComponent类,通过调用“~/Plugins/MultiFactorAuth.GoogleAuthenticator/Views/Customer/GAVefification.cshtml”视图页面, 在“https://localhost:44369/multi-factor-verification”页面上显示组件:数据输入框,该输入框中所输入的数据是由手机端的GoogleAuthenticator应用(app)所提供的6位数字的验证码。

    AuthenticationModelFactory类,该类用来为身份认证页面,设置(如果当前程序支持)本地化的默认数据,从而为身份认证页面的呈现作好提供准备工作。

108 CreditCardPropertyValidator<T, TProperty>、DecimalPropertyValidator<T, TProperty>、PhoneNumberPropertyValidator<T, TProperty>、UsernamePropertyValidator<T, TProperty>、RuleBuilderOptionsExtension、ValidatorExtensions、BaseNopValidator<TModel>、AuthModelValidator、TokenModelValidator、ModelStateExtensions、GoogleAuthenticatorController、AuthenticationController

    CreditCardPropertyValidator<T, TProperty>类,通过该类中的成员,验证用户所输入的信用卡号字符串中是否全部都是数字。

    DecimalPropertyValidator<T, TProperty>类,通过该类中的成员,验证用户所输入的数据字符串中是否全部都是“Decimal”类型的数字。

    PhoneNumberPropertyValidator<T, TProperty>类,通过该类中的成员,验证用户所输入的数据字符串中是否与移动电话号码的正则表达式及验证规则字符串相符合。

    UsernamePropertyValidator<T, TProperty>类,通过该类中的成员,验证用户所输入的数据字符串中是否与电子邮箱的正则表达式及验证规则字符串相符合。

    RuleBuilderOptionsExtension类,通过该类中的方法成员对第3方“FluentValidation.AspNetCore”中间件中的后端输入规则构建操作接口实例(IRuleBuilderOptions)进行了自定义的扩展,为页面中用户输入的数据进行验证提供方法支撑,如果输入错误在页面中显示出自定义的错误验证信息。

    ValidatorExtensions类,通过该类中的方法成员对第3方“FluentValidation.AspNetCore”中间件中的后端输入规则构建操作接口实例(IRuleBuilderOptions)进行了自定义的扩展,为页面中用户输入的特定类型的数据进行验证提供方法支撑,如果输入错误在页面中显示出自定义的错误验证信息。

    BaseNopValidator<TModel>类,通过相应的参数实例,对数据库指定表中的一些字段生成相应的验证规则表达式,如果用户输入不符合这些验证规则,则在页面中显示出相应的错误验证信息。

    注意:

    1、该类是1个抽象类,不能直接被实例化,只能通过其子类间接被实例化。

    2、该类所定义的后端验证操作从展示层,穿透到了数据交换层,本人认同后端验证操作,但不认同把验证操作穿透到数据交换层进行定义。

    AuthModelValidator类,通过该类中的拷贝构造方法,对Google身份认证插件进行组合验证,如果不能通过验证则获取本地化的验证信息。

    TokenModelValidator类,通过该类中的成员,对Google身份认证插件中的输入是否能够通过Google服务器端身份认证的组合验证,如果不能通过验证则获取本地化的验证信息。

    ModelStateExtensions类,通过该类中的方法成员,把页面中所绑定模型类中指定属性成员的验证错误信息以键/值对的形式存储到字典实例中,为页面中用户输入的数据进行验证提供方法支撑,如果输入错误在页面中显示出自定义的错误验证信息。

    GoogleAuthenticatorController类,通过该类中的成员方法,在指定的页面中为Google身份认证插件进行相应数据配置操作,为当前程序集成/卸载Google身份认证插件提供支撑。

    AuthenticationController类,通过该类中的成员方法,在指定的页面中启用Google身份认证操作,并通过注册用户和手机端GoogleAuthenticator应用(App)所给出的6位数的验证码,从而实现当前程序的双认证登录操作。

对以上功能更为具体实现和注释见:22-03-22-035_Nop_4.40.4(GoogleAuthenticator插件项的定义实现)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值