一般开源系统的演示站点都禁止修改演示数据
这是怎么实现的,
比如 ThinkPHP 开发的。
全局中间件?建个只有读权限的角色?
![]() |
1
Puteulanus 186 天前
看到的一般是定时重置
|
2
jeesk 186 天前
我自己看到的项目 java, golang 的项目都是做拦截器,拦截有删除和修改的方法。 不执行数据库操作即可。
|
![]() |
3
lichao 186 天前
定时重置吧。
如果禁止修改的话,用户无法完全体验产品的功能 |
![]() |
4
beetlerx 186 天前
建一个数据库只读帐号,只需要全局改一下报错信息就行了
|
5
Huelse 186 天前
sqlite 定期覆盖即可
|
![]() |
6
knightdf 186 天前
定时清理定时重置
|
![]() |
7
yolee599 186 天前 via Android
定期重置数据库
|
![]() |
8
JohnH 186 天前
1.定期重置数据库和代码,或自动或手动。php 项目如果有漏洞的话,整站比较容易被端掉
2.有些会利用中间件,来阻止 post 操作,提示演示站不可改 3.有些会在数据层发生真实写入时,阻拦写入 4.有些开源项目会加入一个是否演示站的标记,并根据标记细化操作。类似环境变量、NODE_ENV |
![]() |
9
tlerbao OP @Puteulanus @lichao @Huelse @knightdf @yolee599 定时清理数据这种方式,给的权限太大,怕演示站恶意被搞,而且乱增加演示数据进系统看着也乱。
看来中间件可能目前比较好。 |
10
systemcall 186 天前
可以在你访问的时候给你专门开一个实例,通过反代让你访问到,隔一段时间就销毁
群晖和威联通的演示就是这么弄的 |
![]() |
11
biubiuF 186 天前
一般写 cache ,然后用 lru 就行了
|
![]() |
12
chendy 185 天前
一般能改,不能改就不能体验完整系统功能了
但是会每天凌晨覆盖数据 |
13
zoyao 185 天前
完全不给改起不到演示效果吧,一个小时定时重置一次数据库就好了
|
![]() |
14
flyingghost 185 天前
多租户,每进一个体验者分配单独的账号、单独的库、单独的容器、单独的环境等。具体在哪一层隔离看方便程度。
|
15
yinmin 185 天前 via iPhone
最简单的方法,软件部署到 docker 里,然后 2 小时 recreate 一下
|
16
yinmin 185 天前 via iPhone
做演示系统,重置数据库最方便的方式是用 docker 。
例如,你使用的是 mysql 数据库,你先从官方镜像创建一个 mysql 容器模版,数据目录留在容器里,不要 volume 到主机;然后把演示数据导入 mysql ;然后用容器模版生成新镜像。 从这个新镜像创建新的数据库容器给演示系统使用,定期(例如 2 小时) recreate 这个数据库容器,recreate 一般只需要几百毫秒,非常快。也可以创建多个数据库容器副本给不同的客户。 演示系统的程序部分也可以使用类似的方式用 docker 部署。 |