Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 登录后,以新用户身份重新连接到postgreSQL_Php_Postgresql - Fatal编程技术网

Php 登录后,以新用户身份重新连接到postgreSQL

Php 登录后,以新用户身份重新连接到postgreSQL,php,postgresql,Php,Postgresql,我正在使用postgreSQL 9.1。我在db上创建了四个角色/用户,每个角色/用户在不同的表上拥有不同的权限 当有人尝试登录时,php会以“来宾”(第一个角色/用户)的身份连接到db,如 Guest只能从“用户”表中“选择”以检查登录。成功登录后,我想根据“users”表中名为“level”的int将用户重新连接到数据库。如果表中的“级别”为1,我想将用户重新连接为“低”角色/用户,如 $conn = pg_connect("host=localhost port=5432 dbname=m

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

当有人尝试登录时,php会以“来宾”(第一个角色/用户)的身份连接到db,如

Guest只能从“用户”表中“选择”以检查登录。成功登录后,我想根据“users”表中名为“level”的int将用户重新连接到数据库。如果表中的“级别”为1,我想将用户重新连接为“低”角色/用户,如

$conn = pg_connect("host=localhost port=5432 dbname=mydb user=low password=low")or die('no connection, sorry'); 
“低”角色/用户只能在某些表上插入和更新

以及随后的其他角色/用户。如果用户表上的“级别”为2,则连接为“中”(可以插入/更新/删除),如果为3,则连接为“高”(超级用户)

简单地说,这就像:连接为“来宾”,这样你就可以“选择”并根据“级别”验证登录>登录成功>,重新连接为“低”,这样你就可以插入/更新或作为“中”,这样你就可以插入/更新/删除或作为“高”,所以,超级用户

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


谢谢

简单的事情是授予您希望来宾用户将权限更改为的角色的使用权:

GRANT ROLE my_app_user1 TO guest;
成功验证后,您可以:

SET ROLE my_app_user1;

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

成功登录后,断开与当前数据库的连接,并重新连接到相应的权限级别。将数据库资源传递给pg_close,
SET ROLE my_app_user1;