-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathappsettings.json
More file actions
47 lines (39 loc) · 2.14 KB
/
Copy pathappsettings.json
File metadata and controls
47 lines (39 loc) · 2.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
// TenonAdmin 全部配置都在这一节下,不写即用默认值(默认值就是「零配置可跑」的那套)。
// 下面注释掉的是上生产前最该过一遍的几项;完整清单见 docs/deployment.md。
"TenonAdmin": {
// 签名密钥。留空 = 开发密钥模式(自动生成并落到 ./data/dev-jwt.key,同时打印警告)。
// 生产必须显式配置 ≥32 字节随机串,且别提交进版本库(用环境变量 TenonAdmin__Jwt__SecretKey)。
// "Jwt": { "SecretKey": "" },
// 跨源:默认空 = 不放行任何跨源。前端与后端同源(nginx 反代 / 后端托管 dist)时无需配置。
// "Api": { "Cors": { "AllowedOrigins": [ "https://admin.example.com" ] } },
// 上传目录。若打算用 app.UseStaticFiles() 托管前端产物,必须把它挪出 wwwroot,
// 否则上传的文件会被静态中间件匿名直出,绕过鉴权下载接口(见 docs/deployment.md)。
// "Upload": { "RootPath": "./storage/upload" },
// 多实例水平扩展时,每个实例的 WorkerId(0–63)必须不同,否则同毫秒发号会撞主键。
// "Id": { "WorkerId": 0 },
// 默认 SQLite,首启自动建表 + 写种子,并在控制台打印一次随机超管密码。
// 换库:DbType = Sqlite | MySql | SqlServer | PostgreSQL
"Database": {
"DbType": "Sqlite",
"ConnectionString": "Data Source=./data/admin.db"
},
// 单实例默认 0;多副本时每个实例必须不同
"Id": { "WorkerId": 0 }
},
// CRM 演示策略:导入向导可走完,默认不写库(避免公开 demo 脏数据)。
// 本地真落库:appsettings.Development.json 设 "ImportDryRun": false。
// ReadOnly 是公开部署的写入闸门(DemoReadOnlyFilter):除认证与导入外一切非 GET 返回 41002,
// 菜单和按钮照常渲染。本地默认关,四个账号的增删改查都是真的。
// 别用内核的 TenonAdmin:DemoMode 代替它——那个没有放行名单,会把导入 POST 一起拦掉。
"CrmDemo": {
"ImportDryRun": true,
"ReadOnly": false
}
}