我的Laravel项目使用MySQL。我想主持我的项目演示版,任何人都可以使用给定的凭据登录并执行他允许的任何操作。当他退出时,他所做的改变应该消失了。同时,具有相同凭证的多个用户可以操纵应该被隔离的数据,而无需改变到其他当前的数据库。我怎样才能做到这一点?
答案 0 :(得分:0)
您可以编写一个SQL文件,其中包含" reset"所需的所有SQL命令。数据库。例如,这可以删除所有记录并使用"默认"预先填充表格。记录。然后,您可以在每次用户注销时触发此脚本。
这听起来像编写这样的脚本会很困难和耗时,但是大多数SQL客户端可以在你" backup"数据库到SQL文件(当您备份到SQL文件时,它只是写入恢复数据库所需的所有SQL命令。)
我希望这会有所帮助。
答案 1 :(得分:0)
如果我必须这样做,我会使用Docker(一种访问linux容器的简单方法)。
我会考虑在容器中提供整个目标环境堆栈,然后在随机URL上提供代理: * .host.domain / * host.domain // * host.domain:/
应用程序环境的副本将在容器内生成,配置为将其内部端口80/443作为其他数字公开,然后通过创建代理的虚拟主机/目录为用户提供连接方式此
这样,您的应用程序不需要在内部处理任何奇怪的数据库行/表/端口/名称更改 - 只需要处理在不同URL后面运行。
我在nginx背后构建了类似的东西(允许我在不影响现有会话的情况下加载和卸载代理),以提供否则会遭受用户数据冲突的应用程序环境 - 请参阅http://docker.stat.auckland.ac.nz/
在此示例中,当用户请求实例时,应用程序目录仅在/ srv / shiny /的docker实例内挂载,并且容器中的端口3838映射到某些7999< <在主持人上10000。
然后我从模板创建以下内容,将其放置在配置为由我的nginx服务器读取的文件夹中:
location /<random instance name>/
{
proxy_pass http://localhost:<port>;
proxy_redirect http://localhost:<port>/ $scheme://$server_name/;
}
并运行'systemctl reload nginx'以获取新实例,将uri交还给用户。