.env.example 5.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. # 数据库连接:达梦 DM(当前启用;主机不变,端口 5236,用户/库名 DMS)
  2. # 兼容两种格式:Python 版 dm+dmPython:// 连接串会被自动转换为 jdbc:dm://
  3. DMS_DATABASE_URL=dm+dmPython://DMS:change-me@127.0.0.1:5236
  4. # 原 MySQL 8 连接(保留备查,回切时取消注释并注释上方 DM 链接):
  5. # DMS_DATABASE_URL=mysql+pymysql://dms_app:change-me@127.0.0.1:3306/dms?charset=utf8mb4
  6. # 存储根目录:留空时使用工作目录下 dms-storage/。
  7. # 与 Python 版并行验证共用存储时,显式指向 backend/dms-storage
  8. # DMS_STORAGE_ROOT=
  9. # 单文件、请求总大小与批量文件数
  10. DMS_MAX_FILE_SIZE=52428800
  11. DMS_MAX_UPLOAD_SIZE=104857600
  12. DMS_BATCH_MAX_FILES=50
  13. # LibreOffice 离线转换配置(DOC/DOCX 转 PDF 预览)
  14. DMS_OFFICE_PREVIEW_ENABLED=true
  15. DMS_LIBREOFFICE_EXECUTABLE=C:\\Program Files\\LibreOffice\\program\\soffice.exe
  16. DMS_LIBREOFFICE_TIMEOUT_SECONDS=60
  17. DMS_LIBREOFFICE_MAX_CONCURRENCY=2
  18. # JWT 密钥(与 Python 版一致时两套后端令牌互通)
  19. DMS_JWT_SECRET=replace-with-a-random-secret
  20. # 页面空闲自动登出(分钟),缺省 5:用户在页面上无鼠标/滚动/键盘等操作持续
  21. # 达到该时长后前端自动退出登录;设为 0 表示关闭该功能
  22. DMS_IDLE_LOGOUT_MINUTES=5
  23. # 登录图片验证码(缺省 true 开启,键与 Python 版一致):开启时登录页显示图片
  24. # 验证码输入,登录请求需携带 captchaId/captchaCode;false 关闭后回归三键请求
  25. DMS_CAPTCHA_ENABLED=true
  26. # 超级管理员登录开关(缺省 true 允许,键与 Python 版一致):设为 false 后内置
  27. # admin 禁止登录(报错与用户名或密码错误完全一致)、用户列表隐藏 admin、创建
  28. # 同名用户报"不能创建该名称的用户",外部无法感知系统中存在该账号
  29. DMS_ALLOW_ADMIN_LOGIN=true
  30. # ─────────────────────────────────────────────────────────────
  31. # 禁用用户名密码登录(安全管控)
  32. # ─────────────────────────────────────────────────────────────
  33. # 缺省 false。设为 true 后仅允许单点登录(门户跳转验签、本地 SSO 代理)进入系统:
  34. # POST /auth/login 一律 403「用户名密码登录已被禁用」(先于验证码校验与用户查询,
  35. # 不消耗验证码、不泄露账号是否存在),登录页隐藏账号密码表单仅显示单点登录提示。
  36. # 注意:开启前请确认门户(DMS_PORTAL_*)或本地 SSO(DMS_SSO_PROXY_ENABLED=true)
  37. # 至少一项可用,否则将无人能登录系统(需改回 .env 后重启方可恢复)
  38. DMS_PASSWORD_LOGIN_DISABLED=false
  39. # 一次一码轮换(安全需求:写操作防重放,缺省 true 开启,当前仅 Java 版实现):
  40. # 开启后 POST/PUT/DELETE 写操作成功响应经 X-DMS-Access-Token 头返回轮换出的新
  41. # 授权码,旧码对写操作立即失效(401 SESSION_ROTATED);GET 读请求沿用原码不轮换。
  42. # 设为 false 时登录不落会话代、写操作不比对不轮换,存量会话自然过渡
  43. DMS_TOKEN_ROTATION_ENABLED=true
  44. # 系统管理页监控信息展示(缺省 false):false 时系统管理页仅显示维护操作与备份管理,
  45. # 隐藏系统信息/资源监控/存储用量/运行参数等区块;true 时完整显示
  46. DMS_SYSTEM_MONITOR_ENABLED=false
  47. # rsync 可执行文件路径(可选,RSYNC 备份模式用):留空自动探测——先 PATH 上的
  48. # rsync,再发行目录 tools/rsync/ 内置版(Windows 发行包已随包携带 cwRsync)
  49. # DMS_RSYNC_EXECUTABLE=
  50. # CORS 跨域白名单(逗号分隔 Origin);默认留空=仅同源访问(推荐,前端由本服务托管)。
  51. # 仅开发分域联调时配置,例如 DMS_CORS_ORIGINS=http://localhost:5173
  52. DMS_CORS_ORIGINS=
  53. # ─────────────────────────────────────────────────────────────
  54. # 门户跳转按需登录(键与 Python 版完全一致,详见 docs/门户对接指南.md)
  55. # ─────────────────────────────────────────────────────────────
  56. DMS_PORTAL_PROVIDER=
  57. DMS_PORTAL_TOKEN_PARAM=token
  58. DMS_PORTAL_VERIFY_URL=
  59. DMS_PORTAL_VERIFY_METHOD=POST
  60. DMS_PORTAL_VERIFY_TOKEN_IN=header
  61. DMS_PORTAL_VERIFY_HEADER=Authorization
  62. DMS_PORTAL_VERIFY_HEADER_TEMPLATE=Bearer {token}
  63. DMS_PORTAL_VERIFY_SUCCESS_FIELD=code
  64. DMS_PORTAL_VERIFY_SUCCESS_VALUE=0
  65. DMS_PORTAL_VERIFY_USER_FIELD=data
  66. DMS_PORTAL_USERINFO_URL=
  67. DMS_PORTAL_USERINFO_UID_PARAM=userId
  68. DMS_PORTAL_FIELD_MAP=externalId:userId,username:loginName,realName:realName,orgName:orgName
  69. DMS_PORTAL_DEFAULT_ORG_ID=
  70. DMS_PORTAL_HTTP_TIMEOUT_SECONDS=10
  71. # ─────────────────────────────────────────────────────────────
  72. # 本地单点登录代理(需求2,仅Java版,契约1.25;详见 docs/门户对接指南.md 场景D)
  73. # 开关缺省 false;开启后前端未登录时自动探测 proxy-verify,成功进入门户双阶段流程
  74. # ─────────────────────────────────────────────────────────────
  75. DMS_SSO_PROXY_ENABLED=true
  76. DMS_SSO_PROXY_HOST=127.0.0.1
  77. DMS_SSO_PROXY_PORT=8080
  78. DMS_SSO_USER_SERVICE_HOST=127.0.0.1
  79. DMS_SSO_USER_SERVICE_PORT=8800
  80. DMS_SSO_TIMEOUT_SECONDS=10