【问题标题】:Field Authorization level with PostgraphilePostgraphile 的现场授权级别
【发布时间】:2020-03-20 11:03:45
【问题描述】:

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

例如,我有一个 carmodel 表,我的查询类似于:

{
   carmodel
      {  
         id
         name
         description
      }
}

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

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

【问题讨论】:

    标签: graphql postgraphile


    【解决方案1】:

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

    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;
    

    查看our row level security cheatsheet

    【讨论】:

      猜你喜欢
      • 2020-06-09
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      • 2015-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多