0

目前,我正在使用 Postgraphile,我需要在数据/字段级别强制执行权限。

例如,我有一个汽车模型表,我的查询类似于:

{
   carmodel
      {  
         id
         name
         description
      }
}

好吧,在这张表中,我有 ids (1 = AUDI, 2 = GM, 3 = BMW) 当前用户(在角色/声明上)只有查看权限(1=AUDI/3=BMW)

有没有办法根据字段数据强制执行权限?并且只返回根据用户权限过滤的数据?

4

1 回答 1

2

是的; 行级安全性可以声明式地定义它。就像是:

create policy audi_bmw on carmodel for select using (
  id in (1, 3)
);

我猜这个权限来自另一个表;所以它可能更像是:

create policy audi_bmw on carmodel for select using (
  id in (
    select car_model_id
    from user_carmodel_permissions
    where user_id = current_user_id()
  )
);

假设您已经有一个current_user_id功能,例如:

create function current_user_id() returns int as $$
  select nullif(current_setting('jwt.claims.user_id', true), '')::int;
$$ language sql stable;

查看我们的行级安全备忘单

于 2019-11-25T10:08:41.537 回答