V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tlerbao
V2EX  ›  程序员

一般开源系统演示站点禁止修改演示数据都是怎么实现的?

  •  1
     
  •   tlerbao · 186 天前 · 2806 次点击
    这是一个创建于 186 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一般开源系统的演示站点都禁止修改演示数据

    这是怎么实现的,

    比如 ThinkPHP 开发的。

    全局中间件?建个只有读权限的角色?

    16 条回复    2023-03-27 17:52:39 +08:00
    Puteulanus
        1
    Puteulanus  
       186 天前
    看到的一般是定时重置
    jeesk
        2
    jeesk  
       186 天前
    我自己看到的项目 java, golang 的项目都是做拦截器,拦截有删除和修改的方法。 不执行数据库操作即可。
    lichao
        3
    lichao  
       186 天前
    定时重置吧。

    如果禁止修改的话,用户无法完全体验产品的功能
    beetlerx
        4
    beetlerx  
       186 天前
    建一个数据库只读帐号,只需要全局改一下报错信息就行了
    Huelse
        5
    Huelse  
       186 天前
    sqlite 定期覆盖即可
    knightdf
        6
    knightdf  
       186 天前
    定时清理定时重置
    yolee599
        7
    yolee599  
       186 天前 via Android
    定期重置数据库
    JohnH
        8
    JohnH  
       186 天前
    1.定期重置数据库和代码,或自动或手动。php 项目如果有漏洞的话,整站比较容易被端掉
    2.有些会利用中间件,来阻止 post 操作,提示演示站不可改
    3.有些会在数据层发生真实写入时,阻拦写入
    4.有些开源项目会加入一个是否演示站的标记,并根据标记细化操作。类似环境变量、NODE_ENV
    tlerbao
        9
    tlerbao  
    OP
       186 天前
    @Puteulanus @lichao @Huelse @knightdf @yolee599 定时清理数据这种方式,给的权限太大,怕演示站恶意被搞,而且乱增加演示数据进系统看着也乱。

    看来中间件可能目前比较好。
    systemcall
        10
    systemcall  
       186 天前
    可以在你访问的时候给你专门开一个实例,通过反代让你访问到,隔一段时间就销毁
    群晖和威联通的演示就是这么弄的
    biubiuF
        11
    biubiuF  
       186 天前
    一般写 cache ,然后用 lru 就行了
    chendy
        12
    chendy  
       185 天前
    一般能改,不能改就不能体验完整系统功能了
    但是会每天凌晨覆盖数据
    zoyao
        13
    zoyao  
       185 天前
    完全不给改起不到演示效果吧,一个小时定时重置一次数据库就好了
    flyingghost
        14
    flyingghost  
       185 天前
    多租户,每进一个体验者分配单独的账号、单独的库、单独的容器、单独的环境等。具体在哪一层隔离看方便程度。
    yinmin
        15
    yinmin  
       185 天前 via iPhone
    最简单的方法,软件部署到 docker 里,然后 2 小时 recreate 一下
    yinmin
        16
    yinmin  
       185 天前 via iPhone
    做演示系统,重置数据库最方便的方式是用 docker 。

    例如,你使用的是 mysql 数据库,你先从官方镜像创建一个 mysql 容器模版,数据目录留在容器里,不要 volume 到主机;然后把演示数据导入 mysql ;然后用容器模版生成新镜像。

    从这个新镜像创建新的数据库容器给演示系统使用,定期(例如 2 小时) recreate 这个数据库容器,recreate 一般只需要几百毫秒,非常快。也可以创建多个数据库容器副本给不同的客户。

    演示系统的程序部分也可以使用类似的方式用 docker 部署。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   732 人在线   最高记录 6067   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 21:14 · PVG 05:14 · LAX 14:14 · JFK 17:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.