![](/img/trans.png)
[英]Laravel, best place/naming for queries related to multiple db tables
[英]Restrict tables in DB, on which a user can run queries in Laravel
我正在使用Laravel开发具有“服务”表的应用程序,例如用户,项目,user_items等。
另外,我还有一些表需要允许用户运行其查询。 也就是说,用户将其查询发送到服务器,然后在该服务器上运行。
问题是:我想允许用户仅运行SELECT查询,并禁止运行UPDATE,INSERT和DELETE。 另外,我需要允许仅在确定的表上运行这些查询。 即,不允许用户从用户表中选择。
用户将运行原始查询,即将使用DB:raw()。
我如何在Laravel中做到这一点?
解决方案之一是创建两个数据库:MYSQL和sqlite,并允许用户仅使用sqlite来运行查询,但是在这种情况下,测试会出现问题。
您需要使用GRANT和REVOKE命令。 首先按照文档中的概述创建用户
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';
GRANT SELECT ON db1.* TO 'jeffrey'@'localhost';
然后一一撤销多余的
REVOKE SELECT ON db1.tablename FROM 'jeffrey'@'localhost'
您将必须在每个表上执行此操作。 因此,一种选择是编写循环执行此操作的PHP脚本
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.