PostgreSQL-同时使用列级安全性和行级安全性

时间:2019-04-11 16:09:30

标签: postgresql row-level-security

假设我有一个这样定义的表;

CREATE TABLE IF NOT EXISTS Users (
  name TEXT,
  email EMAIL
);

我想允许所有用户列出用户名。我只希望用户自己(通过JWT认证)能够选择其电子邮件。

理想情况下,我想写一些类似的东西

-- Allow all selections but email
CREATE POLICY select_users ON Users FOR SELECT (name) USING (true);
-- Allow selection of email to the user itself
CREATE POLICY select_users_email ON Users FOR SELECT (email) USING
  (id = NULLIF(current_setting('jwt.claims.id', true), '')::UUID);

但是那行不通。

如何通过策略将列级安全性(允许任何人看到名称)与行级安全性相结合,以仅允许用户阅读自己的电子邮件?

0 个答案:

没有答案