Skip to content

5.8 演示模式 ​

概述

演示模式用于对外展示环境:写操作一律拒绝,读操作与登录类公开接口放行。一个开关(app.demo)保护演示数据不被参观者改动,同时不影响浏览体验。

行为矩阵(internal/middleware/demo.go 实际逻辑) ​

请求demo=true 时
GET / HEAD / OPTIONS(读方法)放行
免登录公开路径(登录/验证码/令牌兑换等)放行
其余方法(POST / PUT / DELETE…)拒绝,返回 CodeDemoMode("演示环境,禁止操作!")

判定只看 HTTP 方法与公开标记:读方法与公开路径直接 c.Next(),其余一律拒绝并写入拒绝原因(与限流同款 denied 通道,不产生操作日志)。app.demo=false(默认)时整体放行、零额外开销。

配置 ​

yaml
app:
  demo: true    # 演示模式开关

对应环境变量:APP_APP_DEMO=true。

与其他模式的关系 ​

模式用途与演示模式
app.prod生产红线校验(密钥/万能码/生成器)可同时开启
app.demo拦截写操作演示站通常同时开 prod + demo

演示站推荐组合:prod=true(拒绝弱密钥等)+ demo=true(拒绝写操作)+ 生成器关闭。

演示环境其他配套建议 ​

  • 独立数据库实例,定期从种子数据重置
  • 文件上传目录可写但定期清理
  • 日志级别调至 info,避免刷屏
  • 限流保持开启(防参观者误触发高频)

下一步 ​

→ 5.9 多租户隔离

小蚂蚁云团队 · 提供技术支持