using Apimanager_backend.Services; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.IdentityModel.Tokens; using StackExchange.Redis; using System.ComponentModel; using System.Runtime.CompilerServices; using System.Text; namespace Apimanager_backend.Config { public static class ServiceCollectionExtensions { public static IServiceCollection AddAllService(this IServiceCollection services,IConfiguration configuration) { services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); services.AddJWTService(configuration); services.AddScoped(); services.AddScoped(); services.AddSingleton(); services.AddSingleton(); return services; } public static IServiceCollection AddJWTService(this IServiceCollection services,IConfiguration configuration) { var jwtSettings = configuration.GetSection("JwtSettings"); var key = Encoding.ASCII.GetBytes(jwtSettings["Secret"]); // JWT配置 services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = jwtSettings["Issuer"], ValidAudience = jwtSettings["Audience"], IssuerSigningKey = new SymmetricSecurityKey(key) }; }); //redis配置 services.AddSingleton(ConnectionMultiplexer.Connect(configuration["Redis:ConnectionString"])); return services; } } }