2013-03-07 58 views
0

我使用的是PostgreSQL 9.1。我在db上創建了四個角色/用戶,每個人在不同的表上擁有不同的權限。作爲新用戶重新連接到postgreSQL,登錄後

當有人試圖登錄,PHP連接到數據庫作爲「客人」(第一個角色/用戶)像

$conn = pg_connect("host=localhost port=5432 dbname=mydb user=guest password=guest")or die('no connection, sorry'); 

從「用戶」表遊客只能「選擇」,以檢查登錄。在成功登錄後,我想根據名爲「level」的int在「users」表上重新將用戶連接到數據庫。如果「級別」,在表中找到的是1我想用戶重新連接爲「低」角色/用戶,像

$conn = pg_connect("host=localhost port=5432 dbname=mydb user=low password=low")or die('no connection, sorry'); 

「低」的角色/用戶只能插入和一些表的更新。

然後爲其他角色/用戶。如果users表中的「level」爲2,則連接爲「mid」(可插入/更新/刪除),如果連接爲「high」(超級用戶)。

簡而言之,它就像:連接爲「guest」,以便您可以「選擇」並驗證登錄>登錄succesfull>根據「級別」,重新連接爲「低」,因此您可以插入/更新OR 「mid」,所以你可以插入/更新/刪除OR,如「高」,超級用戶。

我該怎麼做?要在成功登錄後重新連接,以便用戶獲得所需的權限,以便他可以執行正確的操作?

謝謝

+0

成功登錄後,從當前數據庫斷開並重新連接到相應的權限級別。 – shapeshifter 2013-03-07 00:07:42

+0

將db資源傳遞給pg_close,http://php.net/manual/en/function.pg-close.php – shapeshifter 2013-03-07 00:08:20

回答

1

最簡單的事情是授予你想要的來賓用戶更改權限的角色用法:

GRANT ROLE my_app_user1 TO guest; 

然後認證成功後,你可以:

SET ROLE my_app_user1; 

您可以同時運行身份驗證檢查。