项目作者: axzxs2001

项目描述 :
Ocelot的权限验证测试项目。
高级语言: TypeScript
项目地址: git://github.com/axzxs2001/OcelotSample.git
创建时间: 2017-11-22T02:00:46Z
项目社区:https://github.com/axzxs2001/OcelotSample

开源协议:

下载


OcelotSample

Ocelot的测试项目。

所有项目配置文件:appsettings.json

“Audience”: {
“Secret”: “ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890”,
“Issuer”: “gsw”,
“Audience”: “everone”
}

Ocelot网关

Program.cs
  1. public class Program
  2. {
  3. public static void Main(string[] args)
  4. {
  5. Console.Title = "OcelotGateway";
  6. IWebHostBuilder builder = new WebHostBuilder();
  7. builder.ConfigureServices(service =>
  8. {
  9. service.AddSingleton(builder);
  10. });
  11. builder.UseKestrel()
  12. .UseContentRoot(Directory.GetCurrentDirectory())
  13. .UseIISIntegration()
  14. .UseStartup<Startup>()
  15. .UseApplicationInsights();
  16. var host = builder.Build();
  17. host.Run();
  18. }
  19. }
Startup.cs
  1. public class Startup
  2. {
  3. public Startup(IHostingEnvironment environment)
  4. {
  5. var builder = new Microsoft.Extensions.Configuration.ConfigurationBuilder();
  6. builder.SetBasePath(environment.ContentRootPath)
  7. .AddJsonFile("appsettings.json", false, reloadOnChange: true)
  8. .AddJsonFile($"appsettings.{environment.EnvironmentName}.json", optional: false, reloadOnChange: true)
  9. //添加ocelot配置文件
  10. .AddJsonFile("configuration.json", optional: false, reloadOnChange: true)
  11. .AddEnvironmentVariables();
  12. Configuration = builder.Build();
  13. }
  14. public IConfigurationRoot Configuration { get; }
  15. public void ConfigureServices(IServiceCollection services)
  16. {
  17. var audienceConfig = Configuration.GetSection("Audience");
  18. //注入OcelotJwtBearer
  19. services.AddOcelotJwtBearer(audienceConfig["Issuer"], audienceConfig["Issuer"], audienceConfig["Secret"], "GSWBearer");
  20. //注放Ocelot
  21. services.AddOcelot(Configuration, (x) =>
  22. {
  23. x.WithMicrosoftLogging(log =>
  24. {
  25. log.AddConsole(LogLevel.Debug);
  26. }).WithDictionaryHandle();
  27. });
  28. }
  29. public async void Configure(IApplicationBuilder app, IHostingEnvironment env)
  30. {
  31. if (env.IsDevelopment())
  32. {
  33. app.UseDeveloperExceptionPage();
  34. }
  35. await app.UseOcelot();
  36. }
  37. }

分发Token项目

Startup.cs
  1. public class Startup
  2. {
  3. public Startup(IConfiguration configuration)
  4. {
  5. Configuration = configuration;
  6. }
  7. public IConfiguration Configuration { get; }
  8. public void ConfigureServices(IServiceCollection services)
  9. {
  10. var audienceConfig = Configuration.GetSection("Audience");
  11. //注入OcelotJwtBearer
  12. services.AddJTokenBuild(audienceConfig["Issuer"], audienceConfig["Issuer"], audienceConfig["Secret"], "/api/denied");
  13. services.AddMvc();
  14. }
  15. public void Configure(IApplicationBuilder app, IHostingEnvironment env)
  16. {
  17. if (env.IsDevelopment())
  18. {
  19. app.UseDeveloperExceptionPage();
  20. }
  21. app.UseMvc();
  22. }
  23. }

业务项目

Startup.cs
  1. public class Startup
  2. {
  3. public Startup(IConfiguration configuration)
  4. {
  5. Configuration = configuration;
  6. }
  7. public IConfiguration Configuration { get; }
  8. public void ConfigureServices(IServiceCollection services)
  9. {
  10. //读取配置文件
  11. var audienceConfig = Configuration.GetSection("Audience");
  12. services.AddOcelotPolicyJwtBearer(audienceConfig["Issuer"], audienceConfig["Issuer"], audienceConfig["Secret"], "GSWBearer", "Permission", "/hisapi/denied");
  13. //这个集合模拟用户权限表,可从数据库中查询出来
  14. var permission = new List<Permission> {
  15. new Permission { Url="/hisapi/hisuser", Name="system"},
  16. new Permission { Url="/", Name="system"}
  17. };
  18. services.AddSingleton(permission);
  19. services.AddMvc();
  20. }
  21. public void Configure(IApplicationBuilder app, IHostingEnvironment env)
  22. {
  23. if (env.IsDevelopment())
  24. {
  25. app.UseDeveloperExceptionPage();
  26. }
  27. app.UseMvc();
  28. }
  29. }