diff --git a/src/Infrastructure/Extensions/ServiceCollectionExtensions.cs b/src/Infrastructure/Extensions/ServiceCollectionExtensions.cs index de24c73..692e526 100644 --- a/src/Infrastructure/Extensions/ServiceCollectionExtensions.cs +++ b/src/Infrastructure/Extensions/ServiceCollectionExtensions.cs @@ -30,7 +30,7 @@ public static class ServiceCollectionExtensions { ArgumentNullException.ThrowIfNull(services); ArgumentNullException.ThrowIfNull(configuration); - var redisOptions = configuration.GetSection(RedisOptions.Name).Get(); + var redisOptions = configuration.GetSection(RedisOptions.SectionName).Get(); if (redisOptions is null || !redisOptions.IsEnable) { return services; @@ -73,7 +73,7 @@ public static class ServiceCollectionExtensions { ArgumentNullException.ThrowIfNull(services); ArgumentNullException.ThrowIfNull(configuration); - var audienceOptions = configuration.GetSection(AudienceOptions.Name).Get(); + var audienceOptions = configuration.GetSection(AudienceOptions.SectionName).Get(); if (audienceOptions is null || !audienceOptions.IsEnable) { return services; @@ -135,7 +135,7 @@ public static class ServiceCollectionExtensions { ArgumentNullException.ThrowIfNull(services); ArgumentNullException.ThrowIfNull(configuration); - var audienceOptions = configuration.GetSection(AudienceOptions.Name).Get(); + var audienceOptions = configuration.GetSection(AudienceOptions.SectionName).Get(); if (audienceOptions is null || !audienceOptions.IsEnable) { return services; @@ -233,7 +233,7 @@ public static class ServiceCollectionExtensions ArgumentNullException.ThrowIfNull(configuration); - var mongoDbOptions = configuration.GetSection(MongoDbOptions.Name).Get(); + var mongoDbOptions = configuration.GetSection(MongoDbOptions.SectionName).Get(); if (mongoDbOptions is null || !mongoDbOptions.IsEnable) { return services; @@ -277,7 +277,7 @@ public static class ServiceCollectionExtensions ArgumentNullException.ThrowIfNull(hostEnvironment); - var sqlSugarOptions = configuration.GetSection(SqlSugarOptions.Name).Get(); + var sqlSugarOptions = configuration.GetSection(SqlSugarOptions.SectionName).Get(); if (sqlSugarOptions is null || !sqlSugarOptions.IsEnable) { return services; @@ -344,7 +344,7 @@ public static class ServiceCollectionExtensions services.TryAddSingleton(); return services; } - + /// /// 配置用户上下文服务 T为主键类型 /// @@ -358,4 +358,57 @@ public static class ServiceCollectionExtensions services.TryAddScoped(typeof(IUserContext), typeof(UserContext)); return services; } + + /// + /// 配置跨域 + /// + /// + /// + /// + public static IServiceCollection AddDefaultCors(this IServiceCollection services, IConfiguration configuration) + { + ArgumentNullException.ThrowIfNull(services); + + var corsOptions = configuration.GetSection(CorsOptions.SectionName).Get(); + if (corsOptions is null || !corsOptions.IsEnable) + { + return services; + } + + services.AddCors(options => + { + options.AddPolicy(CorsOptions.SectionName, + policy => + { + if (corsOptions.AllowAnyHeader) + { + policy.AllowAnyHeader(); + } + else + { + policy.WithHeaders(corsOptions.Headers); + } + + if (corsOptions.AllowAnyMethod) + { + policy.AllowAnyMethod(); + } + else + { + policy.WithMethods(corsOptions.Methods); + } + + if (corsOptions.AllowAnyOrigin) + { + policy.AllowAnyOrigin(); + } + else + { + policy.WithOrigins(corsOptions.Origins); + } + } + ); + }); + return services; + } } \ No newline at end of file diff --git a/src/Infrastructure/Options/AudienceOptions.cs b/src/Infrastructure/Options/AudienceOptions.cs index 4979141..76df533 100644 --- a/src/Infrastructure/Options/AudienceOptions.cs +++ b/src/Infrastructure/Options/AudienceOptions.cs @@ -5,7 +5,7 @@ namespace Infrastructure.Options; /// public sealed class AudienceOptions : OptionsBase { - public const string Name = "Audience"; + public const string SectionName = "Audience"; public string Issuer { get; set; } diff --git a/src/Infrastructure/Options/CorsOptions.cs b/src/Infrastructure/Options/CorsOptions.cs new file mode 100644 index 0000000..c214c1f --- /dev/null +++ b/src/Infrastructure/Options/CorsOptions.cs @@ -0,0 +1,18 @@ +namespace Infrastructure.Options; + +public class CorsOptions : OptionsBase +{ + public const string SectionName = "Cors"; + + public bool AllowAnyMethod { get; set; } + + public string[] Methods { get; set; } + + public bool AllowAnyHeader { get; set; } + + public string[] Headers { get; set; } + + public bool AllowAnyOrigin { get; set; } + + public string[] Origins { get; set; } +} \ No newline at end of file diff --git a/src/Infrastructure/Options/MongoDbOptions.cs b/src/Infrastructure/Options/MongoDbOptions.cs index 33ddcdd..68287b5 100644 --- a/src/Infrastructure/Options/MongoDbOptions.cs +++ b/src/Infrastructure/Options/MongoDbOptions.cs @@ -2,7 +2,7 @@ public class MongoDbOptions : OptionsBase { - public const string Name = "MongoDb"; + public const string SectionName = "MongoDb"; public string? ConnectionString { get; set; } diff --git a/src/Infrastructure/Options/RabbitMqOptions.cs b/src/Infrastructure/Options/RabbitMqOptions.cs deleted file mode 100644 index 3c6eaa4..0000000 --- a/src/Infrastructure/Options/RabbitMqOptions.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Infrastructure.Options; - -/// -/// rabbitmq链接配置 -/// -public class RabbitMqOptions -{ - public string Host { get; set; } = string.Empty; - - public string VirtualHost { get; set; } = string.Empty; - - public string UserName { get; set; } = string.Empty; - - public string Password { get; set; } = string.Empty; - - public int Port { get; set; } -} \ No newline at end of file diff --git a/src/Infrastructure/Options/RedisOptions.cs b/src/Infrastructure/Options/RedisOptions.cs index d19fdc8..4d99a1f 100644 --- a/src/Infrastructure/Options/RedisOptions.cs +++ b/src/Infrastructure/Options/RedisOptions.cs @@ -5,7 +5,7 @@ namespace Infrastructure.Options; /// public sealed class RedisOptions : OptionsBase { - public const string Name = "Redis"; + public const string SectionName = "Redis"; public string ServiceName { get; set; } diff --git a/src/Infrastructure/Options/SqlSugarOptions.cs b/src/Infrastructure/Options/SqlSugarOptions.cs index 4a05f10..0cfd3d6 100644 --- a/src/Infrastructure/Options/SqlSugarOptions.cs +++ b/src/Infrastructure/Options/SqlSugarOptions.cs @@ -5,7 +5,7 @@ namespace Infrastructure.Options; /// public sealed class SqlSugarOptions : OptionsBase { - public const string Name = "SqlSugar"; + public const string SectionName = "SqlSugar"; public SnowFlakeOptions? SnowFlake { get; set; } diff --git a/src/Infrastructure/Options/VersionOptions.cs b/src/Infrastructure/Options/VersionOptions.cs index 738e039..53db456 100644 --- a/src/Infrastructure/Options/VersionOptions.cs +++ b/src/Infrastructure/Options/VersionOptions.cs @@ -5,7 +5,7 @@ namespace Infrastructure.Options; /// public class VersionOptions : OptionsBase { - public const string Name = "Version"; + public const string SectionName = "Version"; public string HeaderName { get; set; }