假设我有一个这样定义的表;
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);
但是那行不通。
如何通过策略将列级安全性(允许任何人看到名称)与行级安全性相结合,以仅允许用户阅读自己的电子邮件?