Skip to content
推广您的产品

配置项说明

命名空间:ZhonTai.Admin.Core.Configs

中台 Admin 的核心配置文件为 appconfig.json,对应 AppConfig 类。此外还有数据库、JWT、邮件、OSS、缓存、限流等独立配置。

AppConfig 主配置

配置文件:Configs/appconfig.json

配置说明

配置项类型说明
AppTypestring应用程序类型:Controllers / ControllersWithViews / MVC
Urlsstring[]监听地址列表,如 [ "http://*:18010" ]
CorUrlsstring[]跨域地址列表
AssemblyNamesstring[]要扫描的程序集名称列表
EnumListAssemblyNamesstring[]枚举列表程序集名称
Tenantbool是否启用多租户
DistributeKeystring分布式事务唯一标识,为空则不生成分布式事务表
DefaultPasswordstring默认密码
Langobject语言配置
Lang.EnableJsonbool启用语言配置
Lang.DefaultLangstring默认语言,如 zh-CN
Lang.Langsstring[]支持的语言列表
Lang.RequestCultureProvidersstring[]语言请求解析列表:QueryStringCookieAcceptLanguageHeader
Validateobject验证配置
Validate.Loginbool启用登录验证
Validate.Permissionbool启用权限验证
Validate.DataPermissionbool启用数据权限
Validate.ApiDataPermissionbool启用接口级数据权限
AopobjectAOP 配置
Aop.Transactionbool启用声明式事务
SwaggerobjectSwagger 配置
Swagger.Enablebool启用 Swagger
Swagger.EnableEnumSchemaFilterbool启用枚举架构过滤器
Swagger.EnableOrderTagsDocumentFilterbool启用接口排序文档过滤器
Swagger.EnableJsonStringEnumConverterbool启用枚举属性名
Swagger.EnableSchemaIdNamespacebool启用 SchemaId 命名空间
Swagger.AssemblyNameListstring[]用于启用 SchemaId 命名空间的程序集列表
Swagger.RoutePrefixstring路由前缀,如配置微服务文档地址:doc/module/swagger
Swagger.UrlstringSwagger 地址
Swagger.Projectsobject[]Swagger 项目分组列表
ApiUIobject新版接口文档展示配置
ApiUI.Enablebool启用
ApiUI.RoutePrefixstring路由前缀
ApiUI.Footerobject页脚配置
MiniProfilerbool启用 MiniProfiler 性能分析器
Logobject日志配置
Log.Operationbool启用操作日志
Log.Methodstring记录日志方式:Grpc / Cap
RateLimitbool启用限流
VarifyCodeobject验证码配置
VarifyCode.Enablebool启用验证码
VarifyCode.Fontsstring[]字体列表
DynamicApiobject动态 API 配置
DynamicApi.FormatResultbool启用结果格式化
PasswordHasherbool实现标准标识密码哈希
KestrelobjectKestrel 服务器配置
Kestrel.KeepAliveTimeoutintHTTP 连接保活最长时间(秒)
Kestrel.RequestHeadersTimeoutint发送请求头最长时间(秒)
Kestrel.MaxRequestBodySizelong最大请求大小(bytes),null 不限制
HealthChecksobject健康检查配置
HealthChecks.Enablebool启用健康检查
HealthChecks.Pathstring健康检查访问路径
PreflightMaxAgeint跨域预检等待时间(秒),默认 1800
TaskSchedulerUIobject任务调度管理界面
TaskSchedulerUI.Enablebool启用任务调度管理界面
TaskSchedulerUI.Pathstring访问路径
IdGeneratorobjectID 生成器配置
IdGenerator.DataCenterIdint数据中心 ID
IdGenerator.WorkerIdint机器码,必须全局唯一
IdGenerator.WorkerIdBitLengthint机器码位长,默认 6
IdGenerator.SeqBitLengthint序列数位长,默认 6
IdGenerator.CachePrefixstring缓存前缀
IP2RegionobjectIP 地址定位配置
IP2Region.Enablebool启用 IP 地址定位
IP2Region.DbPathstring绝对数据库路径,为空则默认使用网站根目录 ip2region.xdb

配置示例

json
{
  "AppConfig": {
    "appType": "Controllers",
    "urls": [ "http://*:18010" ],
    "corUrls": [],
    "assemblyNames": [ "ZhonTai.Admin.Core", "ZhonTai.Module.Admin" ],
    "EnumListAssemblyNames": [],
    "tenant": true,
    "distributeKey": "",
    "validate": {
      "login": true,
      "permission": true,
      "dataPermission": true,
      "apiDataPermission": true
    },
    "swagger": {
      "enable": true,
      "enableEnumSchemaFilter": true,
      "enableOrderTagsDocumentFilter": true,
      "enableJsonStringEnumConverter": false,
      "enableSchemaIdNamespace": false,
      "assemblyNameList": [],
      "routePrefix": "doc/sys/swagger",
      "url": "http://localhost:18010",
      "projects": [
        {
          "name": "中台Admin",
          "code": "admin",
          "version": "v10.0.1",
          "description": "权限管理"
        }
      ]
    },
    "apiUI": {
      "enable": true,
      "routePrefix": "doc/sys",
      "footer": {
        "enable": false,
        "content": ""
      }
    },
    "miniProfiler": false,
    "aop": {
      "transaction": true
    },
    "log": {
      "operation": true,
      "method": "Grpc"
    },
    "rateLimit": false,
    "varifyCode": {
      "enable": true,
      "fonts": [ "Times New Roman", "Verdana", "Arial", "Gungsuh", "Impact" ]
    },
    "defaultPassword": "123asd",
    "dynamicApi": {
      "formatResult": true
    },
    "passwordHasher": false,
    "Kestrel": {
      "KeepAliveTimeout": 600,
      "RequestHeadersTimeout": 600,
      "maxRequestBodySize": 104857600
    },
    "healthChecks": {
      "enable": true,
      "path": "/health"
    },
    "PreflightMaxAge": 1800,
    "TaskSchedulerUI": {
      "enable": true,
      "path": "/task"
    },
    "IdGenerator": {
      "DataCenterId": 0,
      "WorkerId": 1,
      "WorkerIdBitLength": 6,
      "SeqBitLength": 6,
      "CachePrefix": "zhontai:workerid"
    },
    "IP2Region": {
      "Enable": true,
      "DbPath": ""
    },
    "Lang": {
      "EnableJson": true,
      "DefaultLang": "zh-CN",
      "Langs": [ "zh-CN", "en" ],
      "RequestCultureProviders": []
    }
  }
}

DbConfig 数据库配置

配置文件:Configs/dbconfig.json

配置说明

配置项类型说明
Keystring数据库注册键(如 AdminDbLogDb
Typestring数据库类型:MySql / SqlServer / PostgreSQL / Sqlite / Oracle / TiDB
ConnectionStringstring连接字符串
AssemblyNamesstring[]程序集名称,自动获取实体表,为空则通过 ConfigureFreeSql 自定义配置
IncludeEntityDbsstring[]指定实体数据库列表,不填同步所有数据库表实体
ExcludeEntityDbsstring[]排除实体数据库列表,指定不同步数据库表实体
MonitorCommandbool监听所有操作
Curdbool监听 Curd 操作
SyncStructureSqlbool监听同步结构脚本
SyncDataCurdbool监听同步数据 Curd 操作
CreateDbbool建库
CreateDbConnectionStringstring建库连接字符串
CreateDbSqlstring建库脚本
SyncStructurebool自动同步表结构
SyncStructureEntityBatchSizeint同步结构批次实体数
SyncDataBatchSizeint同步数据分批处理大小,默认 500,过大可能会导致内存溢出
SyncDatabool自动同步种子数据
SyncUpdateDatabool同步更新数据,生产环境谨慎开启
SyncDataPathstring同步数据地址
SyncDataIncludeTablesstring[]同步数据包含表,指定表同步,不填同步所有表
SyncDataExcludeTablesstring[]同步数据排除表,指定表不同步
SyncDataUserobject同步数据操作用户
GenerateDatabool生成种子数据包,发布生产环境前使用完记得关闭
ProviderTypestring指定程序集
SlaveListobject[]读写分离从库列表
IdleTimeint空闲时间(分),0 不自动回收
ForceUpdatebool新增时强制更新 EntityUpdate 数据
Dbsobject[]多库配置(子库列表)

配置示例

json
{
  "DbConfig": {
    "key": "sysdb",
    "assemblyNames": [ "ZhonTai.Admin" ],
    "type": "MySql",
    "connectionString": "Server=localhost;Port=3306;Database=sysdb;Uid=root;Pwd=pwd;Charset=utf8mb4;Min pool size=1;Allow User Variables=True",
    "createDb": true,
    "createDbConnectionString": "Server=localhost;Port=3306;Database=mysql;Uid=root;Pwd=pwd;Charset=utf8mb4;Min pool size=1;Allow User Variables=True",
    "createDbSql": "CREATE DATABASE `sysdb` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci'",
    "syncStructure": true,
    "syncStructureEntityBatchSize": 1,
    "syncDataBatchSize": 500,
    "syncData": true,
    "syncUpdateData": false,
    "SyncDataPath": "InitData/App",
    "syncDataIncludeTables": [],
    "syncDataExcludeTables": [],
    "syncDataUser": {
      "id": 161223411986501,
      "userName": "admin",
      "name": "管理员",
      "tenantId": 161223412138053
    },
    "generateData": false,
    "idleTime": 1440,
    "forceUpdate": false,
    "dbs": [
      {
        "key": "admindb",
        "assemblyNames": [ "ZhonTai.Admin" ],
        "type": "MySql",
        "connectionString": "Server=localhost;Port=3306;Database=admindb;Uid=root;Pwd=pwd;Charset=utf8mb4;Min pool size=1;Allow User Variables=True"
      },
      {
        "key": "logdb",
        "assemblyNames": [ "ZhonTai.Admin" ],
        "includeEntityDbs": [ "Log" ],
        "type": "MySql",
        "connectionString": "Server=localhost;Port=3306;Database=logdb;Uid=root;Pwd=pwd;Charset=utf8mb4;Min pool size=1;Allow User Variables=True"
      }
    ]
  }
}

JwtConfig JWT 配置

配置文件:Configs/jwtconfig.json

配置说明

配置项类型说明
Issuerstring发行者
Audiencestring订阅者
SecurityKeystring密钥,自定义
ExpiresintAccess Token 有效期(分钟),120 = 2 小时
RefreshExpiresintRefresh Token 有效期(分钟),1440 = 1 天

配置示例

json
{
  "JwtConfig": {
    "issuer": "admin.core",
    "audience": "admin.core",
    "securityKey": "73A74C69E2CF4522A7C69375CA0354D8",
    "expires": 120,
    "refreshExpires": 1440
  }
}

EmailConfig 邮件配置

配置文件:Configs/appsettings.json 中的 Email 节点

配置说明

配置项类型说明
HoststringSMTP 主机,如 smtp.qq.com
Portint端口号,如 46558725
UseSslbool是否使用 SSL
UserNamestring邮箱账号
Passwordstring邮箱密码
FromEmailobject发件人信息
FromEmail.Namestring发件人名称
FromEmail.Addressstring发件人地址
ToEmailobject收件人信息
ToEmail.Namestring收件人名称
ToEmail.Addressstring收件人地址

配置示例

json
{
  "Email": {
    "Host": "smtp.qq.com",
    "Port": 465,
    "UseSsl": true,
    "UserName": "",
    "Password": "",
    "FromEmail": {
      "Name": "",
      "Address": ""
    },
    "ToEmail": {
      "Name": "",
      "Address": ""
    }
  }
}

OSSConfig OSS 文件上传配置

配置文件:Configs/ossconfig.json

配置说明

配置项类型说明
LocalUploadConfigobject本地上传配置
LocalUploadConfig.Directorystring上传目录
LocalUploadConfig.DateTimeDirectorystring日期目录格式,如 yyyy/MM/dd
LocalUploadConfig.Md5bool是否启用 MD5 校验
LocalUploadConfig.MaxSizelong文件最大大小(bytes)
LocalUploadConfig.IncludeExtensionstring[]包含文件扩展名列表
LocalUploadConfig.ExcludeExtensionstring[]排除文件扩展名列表,如 [ ".exe", ".dll", ".jar" ]
Providerstring默认文件存储供应商
OSSConfigsobject[]OSS 配置列表

支持 Provider:MinioAliyunQCloud(腾讯云)、Qiniu(七牛)、HuaweiCloud(华为云)。

每个 OSS 配置项说明:

配置项类型说明
Providerstring供应商类型
Endpointstring端点地址
Regionstring区域
AccessKeystring访问密钥
SecretKeystring密钥
IsEnableHttpsbool是否启用 HTTPS
IsEnableCachebool是否启用缓存
BucketNamestring存储桶名称
Urlstring文件外链地址
Md5bool是否启用 MD5 校验
Enablebool是否启用

配置示例

json
{
  "OssConfig": {
    "LocalUploadConfig": {
      "Directory": "upload",
      "DateTimeDirectory": "yyyy/MM/dd",
      "Md5": false,
      "MaxSize": 104857600,
      "IncludeExtension": [],
      "ExcludeExtension": [ ".exe", ".dll", ".jar" ]
    },
    "Provider": "Minio",
    "OSSConfigs": [
      {
        "Provider": "Minio",
        "Endpoint": "127.0.0.1:9006",
        "Region": "",
        "AccessKey": "minio",
        "SecretKey": "minio",
        "IsEnableHttps": false,
        "IsEnableCache": true,
        "BucketName": "admin",
        "Url": "",
        "Md5": false,
        "Enable": false
      }
    ]
  }
}

RpcConfig 远程过程调用配置

配置文件:Configs/appsettings.json 中的 RpcConfig 节点

配置说明

配置项类型说明
HttpobjectHttp 远程配置
Http.Enablebool启用 Http 远程调用,默认 true
Http.AssemblyNamesstring[]客户端程序集名称列表,未配置将自动包含 ZhonTai.Admin.Contracts
GrpcobjectGrpc 远程配置
Grpc.Enablebool启用 Grpc 远程调用,默认 true
Grpc.AssemblyNamesstring[]客户端程序集名称列表,未配置将自动包含 ZhonTai.Admin.Core
Grpc.ServerAssemblyNamesstring[]服务端程序集名称列表
Endpointsobject[]远程地址列表
Endpoints[].Namestring模块名称,如 admin
Endpoints[].HttpUrlstringHttp 请求地址,如 http://localhost:18010
Endpoints[].GrpcUrlstringGrpc 请求地址,如 http://localhost:18011

配置示例

json
{
  "RpcConfig": {
    "Http": {
      "Enable": true,
      "AssemblyNames": [ "ZhonTai.Admin.Contracts" ]
    },
    "Grpc": {
      "Enable": true,
      "AssemblyNames": [ "ZhonTai.Admin.Core" ],
      "ServerAssemblyNames": [ "ZhonTai.Admin" ]
    },
    "Endpoints": [
      {
        "Name": "admin",
        "HttpUrl": "http://localhost:18010",
        "GrpcUrl": "http://localhost:18011"
      }
    ]
  }
}

ImConfig 即时通讯配置

配置文件:Configs/appsettings.json 中的 ImConfig 节点

配置说明

配置项类型说明
Enablebool启用即时通讯,默认 false
Serversstring[]IM 服务器集群地址列表,如 [ "127.0.0.1:17010" ]
ServerstringWebSocket 业务端地址,如 ws://127.0.0.1:17010
RedisConnectionStringstringRedis 连接字符串,如 127.0.0.1:6379,password=,defaultDatabase=6

配置示例

json
{
  "ImConfig": {
    "Enable": false,
    "Servers": [ "127.0.0.1:17010" ],
    "Server": "ws://127.0.0.1:17010",
    "RedisConnectionString": "127.0.0.1:6379,password=,defaultDatabase=6"
  }
}

TaskSchedulerConfig 任务调度配置

配置文件:Configs/appsettings.json 中的 TaskScheduler 节点

配置说明

配置项类型说明
ProcessStartInfoobject进程启动信息
ProcessStartInfo.FileNamestring应用程序路径,如 C:/grpcurl_1.8.7/grpcurl
ProcessStartInfo.WorkingDirectorystring工作目录
AlerEmailobject告警邮件配置
AlerEmail.Enablebool启用告警邮件
AlerEmail.Addressstring告警邮件地址
Modulesobject[]模块列表
Modules[].Namestring模块名称,如 admin
Modules[].HttpUrlstringHttp 请求地址,如 http://localhost:18010
Modules[].GrpcUrlstringGrpc 请求地址,如 http://localhost:18011

配置示例

json
{
  "TaskScheduler": {
    "ProcessStartInfo": {
      "FileName": "C:/grpcurl_1.8.7/grpcurl",
      "WorkingDirectory": ""
    },
    "AlerEmail": {
      "Enable": true,
      "Address": ""
    },
    "Modules": [
      {
        "Name": "admin",
        "HttpUrl": "http://localhost:18010",
        "GrpcUrl": "http://localhost:18011"
      }
    ]
  }
}

RateLimitConfig 限流配置

配置文件:Configs/ratelimitconfig.json

配置说明

配置项类型说明
Enablebool启用限流
Methodstring限流方式:Client(客户端限流)/ Ip(IP 限流)
ClientIdTypestring客户端 ID 类型:Token / UserId / ClientIdHeader
CachePrefixstring缓存前缀
IpRateLimitingobjectIP 限流配置
IpRateLimiting.EnableEndpointRateLimitingbool启用端点限流
IpRateLimiting.StackBlockedRequestsbool堆叠被阻止的请求
IpRateLimiting.RealIpHeaderstring真实 IP 请求头
IpRateLimiting.IpWhiteliststring[]IP 白名单
IpRateLimiting.EndpointWhiteliststring[]端点白名单
IpRateLimiting.ClientWhiteliststring[]客户端白名单
IpRateLimiting.HttpStatusCodeint限制时的 HTTP 状态码
IpRateLimiting.QuotaExceededResponseobject超出配额的响应内容
IpRateLimiting.GeneralRulesobject[]通用限流规则
ClientRateLimitingobject客户端限流配置
ClientRateLimiting.EnableEndpointRateLimitingbool启用端点限流
ClientRateLimiting.ClientIdHeaderstring客户端 ID 请求头
ClientRateLimiting.IpWhiteliststring[]IP 白名单
ClientRateLimiting.EndpointWhiteliststring[]端点白名单
ClientRateLimiting.ClientWhiteliststring[]客户端白名单
ClientRateLimiting.HttpStatusCodeint限制时的 HTTP 状态码
ClientRateLimiting.QuotaExceededResponseobject超出配额的响应内容
ClientRateLimiting.GeneralRulesobject[]通用限流规则

配置示例

json
{
  "RateLimitConfig": {
    "Enable": false,
    "Method": "Client",
    "ClientIdType": "Token",
    "CachePrefix": "zhontai:ratelimit",
    "IpRateLimiting": {
      "EnableEndpointRateLimiting": true,
      "StackBlockedRequests": false,
      "RealIpHeader": "X-Real-IP",
      "IpWhitelist": [],
      "EndpointWhitelist": [
        "get:/api/admin/auth/refresh",
        "*:/*.*GrpcService/*"
      ],
      "ClientWhitelist": [],
      "HttpStatusCode": 429,
      "QuotaExceededResponse": {
        "Content": "{\"code\":429,\"msg\":\"访问过于频繁!\",\"success\": false}",
        "ContentType": "application/json; charset=utf-8",
        "StatusCode": 429
      },
      "GeneralRules": [
        {
          "Endpoint": "*:/api/*",
          "Period": "1s",
          "Limit": 3
        },
        {
          "Endpoint": "*:/api/*",
          "Period": "10m",
          "Limit": 200
        }
      ]
    },
    "ClientRateLimiting": {
      "EnableEndpointRateLimiting": true,
      "ClientIdHeader": "X-ClientId",
      "IpWhitelist": [],
      "EndpointWhitelist": [
        "get:/api/admin/auth/refresh",
        "*:/*.*GrpcService/*"
      ],
      "ClientWhitelist": [],
      "HttpStatusCode": 429,
      "QuotaExceededResponse": {
        "Content": "{\"code\":429,\"msg\":\"访问过于频繁!\",\"success\": false}",
        "ContentType": "application/json; charset=utf-8",
        "StatusCode": 429
      },
      "GeneralRules": [
        {
          "Endpoint": "*:/api/*",
          "Period": "1s",
          "Limit": 3
        },
        {
          "Endpoint": "*:/api/*",
          "Period": "10m",
          "Limit": 200
        }
      ]
    }
  }
}