ユーザーIDをカスタムセッション変数に保存し、それをトリガープロシージャで使用(読み取り)して、ユーザーアクションを承認します。私はこのようなものを見つけました:
set session "myapp.user" = '12345';
...
SELECT current_setting('myapp.user');
動作するようです-"myapp.user"は.confファイルで宣言する必要があると思いましたが、その場でセッション変数を作成できるようです(私は.confファイルをまったく変更していません)。
このようにすることの欠点はありますか?
これは、ユーザーが任意のSQLを実行することを許可されていない限り、適切な方法です(この場合、ユーザーは別のユーザーIDを設定するだけで済みます)。これは、PostgreSQLの真のセッション変数の欠如に対するちょっとしたハックな回避策ですが、それに関する重大な問題は知りません。ところで、参照として使用した関連する以前の質問/回答にリンクしてください。
—
クレイグリンガー
myapp.user
で宣言しなければならない制限postgresql.conf
は9.2または9.1で削除されたと思います