added cors policy

master
Young 7 months ago
parent 43a80d6cf8
commit fb2f1ad072

@ -30,7 +30,7 @@ public static class ServiceCollectionExtensions
{ {
ArgumentNullException.ThrowIfNull(services); ArgumentNullException.ThrowIfNull(services);
ArgumentNullException.ThrowIfNull(configuration); ArgumentNullException.ThrowIfNull(configuration);
var redisOptions = configuration.GetSection(RedisOptions.Name).Get<RedisOptions>(); var redisOptions = configuration.GetSection(RedisOptions.SectionName).Get<RedisOptions>();
if (redisOptions is null || !redisOptions.IsEnable) if (redisOptions is null || !redisOptions.IsEnable)
{ {
return services; return services;
@ -73,7 +73,7 @@ public static class ServiceCollectionExtensions
{ {
ArgumentNullException.ThrowIfNull(services); ArgumentNullException.ThrowIfNull(services);
ArgumentNullException.ThrowIfNull(configuration); ArgumentNullException.ThrowIfNull(configuration);
var audienceOptions = configuration.GetSection(AudienceOptions.Name).Get<AudienceOptions>(); var audienceOptions = configuration.GetSection(AudienceOptions.SectionName).Get<AudienceOptions>();
if (audienceOptions is null || !audienceOptions.IsEnable) if (audienceOptions is null || !audienceOptions.IsEnable)
{ {
return services; return services;
@ -135,7 +135,7 @@ public static class ServiceCollectionExtensions
{ {
ArgumentNullException.ThrowIfNull(services); ArgumentNullException.ThrowIfNull(services);
ArgumentNullException.ThrowIfNull(configuration); ArgumentNullException.ThrowIfNull(configuration);
var audienceOptions = configuration.GetSection(AudienceOptions.Name).Get<AudienceOptions>(); var audienceOptions = configuration.GetSection(AudienceOptions.SectionName).Get<AudienceOptions>();
if (audienceOptions is null || !audienceOptions.IsEnable) if (audienceOptions is null || !audienceOptions.IsEnable)
{ {
return services; return services;
@ -233,7 +233,7 @@ public static class ServiceCollectionExtensions
ArgumentNullException.ThrowIfNull(configuration); ArgumentNullException.ThrowIfNull(configuration);
var mongoDbOptions = configuration.GetSection(MongoDbOptions.Name).Get<MongoDbOptions>(); var mongoDbOptions = configuration.GetSection(MongoDbOptions.SectionName).Get<MongoDbOptions>();
if (mongoDbOptions is null || !mongoDbOptions.IsEnable) if (mongoDbOptions is null || !mongoDbOptions.IsEnable)
{ {
return services; return services;
@ -277,7 +277,7 @@ public static class ServiceCollectionExtensions
ArgumentNullException.ThrowIfNull(hostEnvironment); ArgumentNullException.ThrowIfNull(hostEnvironment);
var sqlSugarOptions = configuration.GetSection(SqlSugarOptions.Name).Get<SqlSugarOptions>(); var sqlSugarOptions = configuration.GetSection(SqlSugarOptions.SectionName).Get<SqlSugarOptions>();
if (sqlSugarOptions is null || !sqlSugarOptions.IsEnable) if (sqlSugarOptions is null || !sqlSugarOptions.IsEnable)
{ {
return services; return services;
@ -358,4 +358,57 @@ public static class ServiceCollectionExtensions
services.TryAddScoped(typeof(IUserContext<T>), typeof(UserContext<T>)); services.TryAddScoped(typeof(IUserContext<T>), typeof(UserContext<T>));
return services; return services;
} }
/// <summary>
/// 配置跨域
/// </summary>
/// <param name="services"></param>
/// <param name="configuration"></param>
/// <returns></returns>
public static IServiceCollection AddDefaultCors(this IServiceCollection services, IConfiguration configuration)
{
ArgumentNullException.ThrowIfNull(services);
var corsOptions = configuration.GetSection(CorsOptions.SectionName).Get<CorsOptions>();
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;
}
} }

@ -5,7 +5,7 @@ namespace Infrastructure.Options;
/// </summary> /// </summary>
public sealed class AudienceOptions : OptionsBase public sealed class AudienceOptions : OptionsBase
{ {
public const string Name = "Audience"; public const string SectionName = "Audience";
public string Issuer { get; set; } public string Issuer { get; set; }

@ -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; }
}

@ -2,7 +2,7 @@
public class MongoDbOptions : OptionsBase public class MongoDbOptions : OptionsBase
{ {
public const string Name = "MongoDb"; public const string SectionName = "MongoDb";
public string? ConnectionString { get; set; } public string? ConnectionString { get; set; }

@ -1,17 +0,0 @@
namespace Infrastructure.Options;
/// <summary>
/// rabbitmq链接配置
/// </summary>
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; }
}

@ -5,7 +5,7 @@ namespace Infrastructure.Options;
/// </summary> /// </summary>
public sealed class RedisOptions : OptionsBase public sealed class RedisOptions : OptionsBase
{ {
public const string Name = "Redis"; public const string SectionName = "Redis";
public string ServiceName { get; set; } public string ServiceName { get; set; }

@ -5,7 +5,7 @@ namespace Infrastructure.Options;
/// </summary> /// </summary>
public sealed class SqlSugarOptions : OptionsBase public sealed class SqlSugarOptions : OptionsBase
{ {
public const string Name = "SqlSugar"; public const string SectionName = "SqlSugar";
public SnowFlakeOptions? SnowFlake { get; set; } public SnowFlakeOptions? SnowFlake { get; set; }

@ -5,7 +5,7 @@ namespace Infrastructure.Options;
/// </summary> /// </summary>
public class VersionOptions : OptionsBase public class VersionOptions : OptionsBase
{ {
public const string Name = "Version"; public const string SectionName = "Version";
public string HeaderName { get; set; } public string HeaderName { get; set; }

Loading…
Cancel
Save