第26章 Facebook第3方身份认证登录插件定义实现

本文详细介绍了nopCommerce程序中插件的定义实现,特别是针对搜索引擎爬虫服务、计划任务服务以及两个系统用户角色的设置。同时,深入探讨了Facebook身份认证的各个组件,包括配置、事件处理、接口实现等,展示了如何通过插件增强程序的灵活性和可扩展性。文章还讨论了在何时应该考虑使用插件来实现功能,以及不适用的情况。
摘要由CSDN通过智能技术生成

说明:

    在“nopCommerce”程序中有3种功能的定义实现相对独立,且难以理解,从易到难它们分别是:

  1. 针对于搜索引擎的网络爬虫服务的定义实现。
  2. 针对计划任务功能的计划任务服务的定义实现。

“nopCommerce”程序还为两个服务功能定义了两个“来宾”角色的系统用户它们分别是:“builtin@search_engine_record.com”、“builtin@background-task-record.com”,以供两个功能专门进行使用。

  1. 本章所讲述的插件的定义实现,虽然它能使用户能够根据自己的功能需求,通过拥有相对独立的功能的插件把指定功能到程序,极大的增加了程序功能实现的灵活性和可扩展性,但这些也极大增加程序本身实现的复杂性和额外的性能开销,至于最终还是开发者在程序的根本需要的基础上,进行选择,本人认为如果不是开发像“nopCommerce”程序一样的功能强大且具有灵活性的模板程序,最好不要在程序中通过插件实现相应的功能。

但主题作为网站程序中经常需要被更改的且实现相对简单,作为1个特殊的功能插件进行定义,却是“nopCommerce”程序为开发者提供的一个很好的解决方案。

092 CustomerActivatedEvent、CustomerRegisteredEvent 、FacebookExternalAuthSettings、FacebookAuthenticationDefaults 、ExternalAuthorizerHelper

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

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

    FacebookExternalAuthSettings类,通过该类及其属性成员实例,与第3方Facebook服务器端身份认证程序进行配置数据的交互操作。

    FacebookAuthenticationDefaults类,过该类中的属性成员,为第3方Facebook身份认证操作,提供常量字符串数据支撑。

    ExternalAuthorizerHelper类,把身份认证操作时所产生的错误信息及其键,持久化存储到服务器端的Session文件中;或从Session文件中,移除身份认证操作时所产生的错误信息及其键。

093 ExternalAuthenticationClaim、ExternalAuthenticationParameters、CustomerAutoRegisteredByExternalMethodEvent、FacebookAuthenticationEventConsumer、IExternalAuthenticationRegistrar、 FacebookAuthenticationRegistrar、IExternalAuthenticationMethod、FacebookAuthenticationMethod、IAuthenticationPluginManager、AuthenticationPluginManager、 IExternalAuthenticationService、ExternalAuthenticationService

ExternalAuthenticationClaim类,通过该类与第3方Facebook身份认证程序中的身份认证单元实例交换数据。

    ExternalAuthenticationParameters类,通过该类与第3方Facebook身份认证程序中的身份认证实例交换数据。

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

    FacebookAuthenticationEventConsumer类,该类主要于触发用户实体的缓存清理操作事件;实际上当程序跳转离开指定页面时,会调用继承于该接口的具体实现类,从而实现自动的从静态缓存数据库/分布式缓存数据库中,移除一些不再被使用的用户密码实体的缓存实例(不管这些缓存实列是否已经达到相应的缓存时间)。

    IExternalAuthenticationRegistrar接口,继承于该接口的具体实现类,把自定义的Facebook身份认证功能管道中间件,添加到内置身份认证管道中间件实例中,以保证当前程序能拥有/正常运行Facebook身份认证功能。

    FacebookAuthenticationRegistrar类,继承于IExternalAuthenticationRegistrar接口,把自定义的Facebook身份认证功能管道中间件,添加到内置身份认证管道中间件实例中,以保证当前程序能拥有/正常运行Facebook身份认证功能。

    IExternalAuthenticationMethod接口,继承于该接口的具体实现类,通过配置持久化设置表中关于Facebook身份认证的数据,把Facebook身份认证功能安装(集成)到当前程序中;或从当产程序中卸载出去。

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

    IAuthenticationPluginManager接口,继承于该接口的具体实现类,实现了如果当前程序启用了Facebook身份认证插件,那么当程序启动时把该插件所需要数据存储到列表类型的内存中,为当前程序使用该插件做好提前准备工作。

    AuthenticationPluginManager类,继承于IAuthenticationPluginManager接口,如果当前程序启用了Facebook身份认证插件,那么当程序启动时把该插件所需要数据存储到列表类型的内存中,为当前程序使用该插件做好提前准备工作。

IExternalAuthenticationService接口,继承于接口的具休实现类,通过外部身份认证纪录类实现了本地注册用户数据与第3方网站/App/应用程序(这里只指:Facebook网站中的注册用户数据)注册用户数据的CURD交互操作,及其根据这些数据实现当前程序的注册/登录操作。

    ExternalAuthenticationService类,继承于IExternalAuthenticationService接口,该类通过外部身份认证纪录类实现了本地注册用户数据与第3方网站/App/应用程序(这里只指:Facebook网站中的注册用户数据)注册用户数据的CURD交互操作,及其根据这些数据实现当前程序的注册/登录操作。

   

094 ModelPreparedEvent<T>、ModelReceivedEvent<T>、EventPublisherExtensions、NopViewComponent、FacebookAuthenticationViewComponent

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

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

    EventPublisherExtensions类,通过模型类事件实例,触发模型类相关实例的缓存数据的移除操作。

    NopViewComponent类,该类实现了,把1个指定的模型实例与『指定』/『默认』视图页面进行绑定,为『指定』/『默认』视图页面的显示作好所有提前的准备工作后,重定向到『指定』/『默认』视图页面(即把组件在指定页面上进行显示)。

    FacebookAuthenticationViewComponent类,通过调用“/Plugins/ExternalAuth.Facebook/Views/PublicInfo.cshtml”视图页面,在登录页面上显示组件:第3方Facebook身份认证按钮控件。

095 NopValidationDefaults、NotNullValidationMessageAttribute、AuthorizeAdminAttribute、BasePluginController、FacebookAuthenticationController

    NopValidationDefaults类,通过该类中的属性成员,为自定义模型绑定的验证操作,提供常量字符串数据支撑。

    NotNullValidationMessageAttribute类,对标记了“[NotNullValidationMessage]”验证模型类中所有属性成员实例将不能为空,并在页面中显示的本地化的不能为空验证错误信息,提供方法支撑。    AuthorizeAdminAttribute类,对标记了“[AuthorizeAdmin]”类/行为方法,进行授权操作,使用户能够访问指定的授权页面。

    BasePluginController类,该类标记了“[NotNullValidationMessage]”,即继承了该类的继承类中所有的属性成员,默认会在页面中显示的本地化的不能为空验证错误信息。

    FacebookAuthenticationController类,使用第3方法身份认证操作执行用户的注册/登录操作后,重定向到指定页面。

1、重构Nop.Web.Framework.Infrastructure.DependencyRegistrar.Register方法,取消下列语句前的注释:

        services.AddScoped<IExternalAuthenticationService, ExternalAuthenticationService>();

        services.AddScoped<IAuthenticationPluginManager, AuthenticationPluginManager>();

对以上功能更为具体实现和注释22-02-12-026_Nop_4.40.4(Facebook第3方身份认证登录插件定义实现)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值