0

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

当有人尝试登录时,php 以“guest”(第一个角色/用户)身份连接到数据库,例如

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

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

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

“低”角色/用户只能在某些表上插入和更新。

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

简而言之,就像:以“访客”身份连接,因此您可以“选择”并验证登录 > 登录成功 > 根据“级别”,重新连接为“低”,因此您可以插入/更新或作为“中”所以你可以插入/更新/删除或作为“高”所以,超级用户。

我怎样才能做到这一点?成功登录后重新连接,以便用户获得所需的权限,以便他可以执行正确的操作?

谢谢

4

1 回答 1

1

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

GRANT ROLE my_app_user1 TO guest;

然后在成功认证后,您可以:

SET ROLE my_app_user1;

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

于 2013-03-10T14:30:24.623 回答