【.NET Core项目实战-统一认证平台】第四章 网关篇-数据库存储配置(2) (5)

实现代码后如何扩展到我们的网关里呢?只需要在注入时增加一个扩展即可。在ServiceCollectionExtensions类中增加如下代码。

/// <summary> /// 扩展使用Mysql存储。 /// </summary> /// <param></param> /// <returns></returns> public static IOcelotBuilder UseMySql(this IOcelotBuilder builder) { builder.Services.AddSingleton<IFileConfigurationRepository, MySqlFileConfigurationRepository>(); return builder; }

然后修改网关注入代码。

public void ConfigureServices(IServiceCollection services) { Action<IdentityServerAuthenticationOptions> options = o => { o.Authority = "http://localhost:6611"; //IdentityServer地址 o.RequireHttpsMetadata = false; o.ApiName = "gateway_admin"; //网关管理的名称,对应的为客户端授权的scope }; services.AddOcelot().AddAhphOcelot(option => { option.DbConnectionStrings = "Server=localhost;Database=Ctr_AuthPlatform;User ID=root;Password=bl123456;"; //option.EnableTimer = true;//启用定时任务 //option.TimerDelay = 10 * 000;//周期10秒 }) .UseMySql() .AddAdministration("/CtrOcelot", options); }

最后把mysql数据库插入sqlserver一样的路由测试信息,然后启动测试,可以得到我们预期的结果。为了方便大家测试,附mysql插入测试数据脚本如下。

#插入全局测试信息 insert into AhphGlobalConfiguration(GatewayName,RequestIdKey,IsDefault,InfoStatus) values(\'测试网关\',\'test_gateway\',1,1); #插入路由分类测试信息 insert into AhphReRoutesItem(ItemName,InfoStatus) values(\'测试分类\',1); #插入路由测试信息 insert into AhphReRoute values(1,1,\'/ctr/values\',\'[ "GET" ]\',\'\',\'http\',\'/api/Values\',\'[{"Host": "localhost","Port": 9000 }]\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',0,1); #插入网关关联表 insert into AhphConfigReRoutes values(1,1,1);

如果想扩展其他数据库实现,直接参照此源码即可。

三、回顾与预告

本篇我们介绍了2种动态更新配置文件的方法,实现访问不同,各有利弊,正式使用时可以就实际情况选择即可,都能达到我们的预期目标,也介绍了Ocelot扩展组件的使用和IdentityServer4的基础入门信息。然后又扩展了我们mysql数据库的存储方式,增加到了我们网关的扩展里,随时可以根据项目实际情况进行切换。

网关的存储篇已经全部介绍完毕,有兴趣的同学可以在此基础上继续拓展其他需求,下一篇我们将介绍使用redis来重写Ocelot里的所有缓存,为我们后续的网关应用打下基础。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwdfzp.html