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