0

私はpostgreSQL 9.1を使用しています。データベースに4つのロール/ユーザーを作成しました。それぞれが異なるテーブルに対して異なる権限を持っています。

誰かがログインしようとすると、phpは「ゲスト」(最初のロール/ユーザー)としてデータベースに接続します

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

ゲストは、ログインを確認するために「ユーザー」テーブルから「選択」することしかできません。ログインに成功した後、「users」テーブルの「level」という名前のintに従って、ユーザーをdbに再接続したいと思います。テーブルにある「レベル」が1の場合、ユーザーを「低」ロール/ユーザーとして再接続したい

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

「低」の役割/ユーザーは、一部のテーブルでのみ挿入および更新できます。

続いて、他の役割/ユーザーについて。users テーブルで見つかった「レベル」が 2 の場合は「mid」(挿入/更新/削除可能) として接続し、3 の場合は「high」(スーパーユーザー) として接続します。

簡単に言えば、「ゲスト」として接続して、ログインを「選択」して検証できるようにする>ログイン成功>「レベル」に従って、「低」として再接続するため、挿入/更新または「中」として挿入/更新/削除または「高」としてできるので、スーパーユーザー。

どうやってやるの?ログインに成功した後に再接続して、ユーザーが必要な権限を取得し、適切なアクションを実行できるようにするには?

ありがとうございました

4

1 に答える 1

1

簡単なことは、ゲストユーザーに権限を変更させたいロールに GRANT USAGE を設定することです:

GRANT ROLE my_app_user1 TO guest;

次に、認証が成功した後、次のことができます。

SET ROLE my_app_user1;

その間、認証チェックを実行できます。

于 2013-03-10T14:30:24.623 に答える