登录后以新用户重新连接postgreSQL


re-connect to postgreSQL as a new user , after login

我正在使用postgreSQL 9.1。我在数据库上创建了四个角色/用户,每个角色/用户在不同的表上具有不同的权限。

当有人试图登录时,php以"guest"(第一个角色/用户)连接到数据库,如

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

Guest只能从"users"表中"select",以检查是否登录。成功登录后,我想重新连接用户到数据库,根据一个名为"level"的int,在"users"表上。如果在表中发现"level"为1,我想将用户重新连接为"low"角色/用户,如

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

"Low"角色/用户只能在某些表上插入和更新。

以及随后的其他角色/用户。如果users表中的level为2,则以mid(可以插入/更新/删除)的身份连接,如果为3,则以high(超级用户)的身份连接。

简单地说,它就像:连接为"客人",所以你可以"选择"并验证登录>登录成功>根据"级别",重新连接为"低",所以你可以插入/更新或为"中",所以你可以插入/更新/删除或为"高",所以,超级用户。

我该怎么做呢?在成功登录后重新连接,以便用户获得所需的权限,从而可以执行正确的操作?

谢谢

简单的方法是对您希望来宾用户将权限更改为的角色授予USAGE:

GRANT ROLE my_app_user1 TO guest;

验证成功后,您可以:

SET ROLE my_app_user1;

您可以同时运行身份验证检查