2017-01-05 32 views
0

我正在製作一個Laravel應用程序,該應用程序具有諸如用戶,項目,user_items等「服務」表。限制數據庫中的表,用戶可以在Laravel中運行查詢

此外,我有我需要允許用戶運行他們的查詢表。也就是說,用戶將他的查詢發送到服務器並在那裏運行。

問題是:我想允許用戶只運行SELECT查詢並禁止運行UPDATE,INSERT和DELETE。 另外,我需要允許只在確定的表上運行這些查詢。也就是說,用戶不允許從用戶表中進行選擇。

用戶將運行原始查詢,即DB:raw()將被使用。

我怎麼能在Laravel中做到這一點?

其中一個解決方案是創建兩個數據庫:MYSQL和sqlite,並允許用戶只使用sqlite來運行查詢,但在這種情況下測試會出現問題。

+0

您的意思是,有些用戶可以使用表格,有些用戶則不允許? –

+0

不是。我的應用程序的所有用戶都可以將自己的查詢發送到應用程序。這將是一個應用程序,它將檢查用戶是否正確查詢任務。例如,用戶將有任務從表中選擇商品。他將發送查詢「SELECT * FROM goods」,服務器將檢查它是否正確完成。 –

+0

首先檢查用戶是否有權使用此功能,然後執行查詢。如何執行查詢,然後檢查用戶是否有權使用此功能。 –

回答

1

您需要使用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腳本,它可以在循環中執行它

+0

感謝您的回答,但我想在不改變數據庫的情況下以編程方式執行此操作。 –

+0

這是不可能的,這是做到這一點的正確方法。這是一個解決的問題。除此之外,您如何防止使用相同用戶名和密碼的人使用控制檯更改數據庫並傳遞laravel? – e4c5

相關問題