配置说明

使用标准的appsettings.json配置文件,对于框架本身,提供了一些配置项,方便用户通过配置来控制程序的行为。

组件配置

配置内容:

"Components": {
    "Cache": "Memory",
    "Database": "PostgreSQL",
    "UseCORS": true,
    "AuthType": "Jwt",
    "MQType": "None",
    "UseSMS": false,
    "UseSmtp": false,
    "UseAWSS3": false,
    "UseOpenAPI": true
}

其中支持的值见下面枚举,使用相对应的字符串即可。

public enum AuthType
{
    Jwt,
    Cookie,
    OAuth
}
public enum DatabaseType
{
    SqlServer,
    PostgreSql,
}
public enum CacheType
{
    Memory,
    Redis,
    Hybrid
}
public enum MQType
{
    None,
    RabbitMQ,
    Kafka
}

认证配置

"Authentication": {
  "Jwt": {
    "ValidAudiences": "MyProjectName.AllFreedomPeople.Default",
    "ValidIssuer": "MyProjectName.HumanFreedom.Default",
    "Sign": "MyProjectName.FightForFreedomForever.Justice",
    "ExpiredSecond": 7200
  },
  "Microsoft": {
    "ClientId": null,
    "ClientSecret": null,
    "CallbackUrl": "/your/callback/"
  },
  "Google": {
    "ClientId": null,
    "ClientSecret": null,
    "CallbackUrl": "/your/callback"
  }
},

目前使用Jwt作为认证方式,如果想要使用第三方登录,可以配置MicrosoftGoogle的相关信息即可,具体的服务注入在ServiceDefaults/WebExtensions.csAddThirdAuthentication方法。

登录安全配置

// 登录安全策略
"LoginSecurityPolicy": {
  // 密码严格等级 0-2
  "PasswordLevel": 0,
  // 验证码
  "IsNeedVerifyCode": false,
  // 密码过期天数
  "PasswordExpired": 365,
  "LoginRetry": 5,
  // 会话数量限制 0-2
  "SessionLevel": 0,
  // 是否开启策略
  "IsEnable": false
}

邮件SMTP协议配置

"Smtp": {
  // smtp服务地址
  "Host": "",
  "Port": 25,
  // 发件人名称
  "DisplayName": "",
  // 发件人地址
  "From": "",
  // 验证用户名
  "Username": "",
  // 验证密码
  "Password": "",
  "EnableSsl": true
}

缓存配置

"Cache": {
    // 最大内容字节
    "MaxPayloadBytes": 1048576,
    // 键长度
    "MaxKeyLength": 1024,
    // 过期 minutes
    "Expiration": 20,
    "LocalCacheExpiration": 10
}

OpenTelemetry配置

OpenTelemetry会自动读取相关配置项。

"Otel": {
  "Exporter": {
    "Otlp": {
      "Endpoint": "https://your-otel-endpoint",
      "Protocol": "grpc",
      "Headers": ""
    }
  },
  "Service": {
    "Name": "MyProjectName"
  }
},

短信服务配置

"SMS": {
  "AccessKeyId": "",
  "AccessKeySecret": "",
  "Sign": ""
}

对象存储服务

"AWSS3": {
   "Endpoint": "",
   "AccessKeyId": "",
   "AccessKeySecret": "",
   "BucketName": "",
   "Region": ""
 }

Tip

完整内容,可查看appsettings.json中配置。也可在Framework.Common程序集中查看Options中的各配置项定义。

加载配置

所有配置将会使用Options注入到IServiceCollection中,然后通过IOptions<T>来获取配置项。

ServiceDefaults程序集中的FrameworkExtensions中定义了AddFrameworkServices扩展方法,该方法功能包括:

  • AddOptions:添加Options服务
  • AddCache:添加缓存服务
  • AddDbContext:添加数据库服务
  • AddDbFactory:添加数据库工厂服务
  • 其他所需服务