using HuiXin.Gateway.Ocelot.Extensions; using Serilog; using System.Security.Cryptography; namespace HuiXin.Gateway.Ocelot { public class Program { public static void Main(string[] args) { //BuildJwt(); var configuration = new ConfigurationBuilder() .AddJsonFile("Configs/ocelot.json", false, true) .AddJsonFile("Configs/jwt.json", false, false) .AddJsonFile("Configs/serilog.json", false, true) .Build(); var logger = new LoggerConfiguration() .ReadFrom.Configuration(configuration) .CreateLogger(); Log.Logger = logger; try { var builder = WebApplication.CreateBuilder(args); builder.Configuration.AddConfiguration(configuration); var services = builder.Services; services.AddCors(); services.AddLogging(loggingBuilder => loggingBuilder.ClearProviders().AddSerilog()); services.AddJWT(configuration); services.AddMyOcelot(configuration); var app = builder.Build(); app.UseCors(); app.UseJWT(); app.UseMyOcelot(); app.Run(); Log.Information("系统已启动"); } catch (Exception ex) { Log.Fatal(ex, "系统异常"); } finally { Log.CloseAndFlush(); } } static void BuildJwt() { using var aes = Aes.Create(); aes.KeySize = 256; aes.GenerateKey(); var sign = Convert.ToBase64String(aes.Key); var extraHeaders = new Dictionary { { "kid", "MyKey" } }; //过期时间(可以不设置,下面表示签名后 10秒过期) double exp = (DateTime.UtcNow.AddDays(10) - new DateTime(1970, 1, 1)).TotalSeconds; var payload = new Dictionary { { "userId", "001" }, { "userAccount", "fan" }, { "exp",exp } }; Console.WriteLine("Token:" + JWTUtil.CreateJwtToken(payload, sign, extraHeaders)); } } }