GraphQL授权 /权限



那么基本上如何处理权限?

假设我们有 post (s(的列表,其中一个参数 first 限制了帖子的数量。只有所有者和批准的用户才能阅读帖子,其他所有人都不能。实施此功能的最佳方法是什么?

query {
  {
    viewer {
      posts(first: 10) {
        id
        text
      }
    }
  }
}

我当前想的是,用户是否可以阅读帖子,并使用dataloader模块将其挂钩。

但是,我该如何查询10个帖子?如果我询问DB的准确10行,那么当我以后使用某些业务逻辑过滤它们时,我可以返回8个帖子。

解决方案是不要在查询上放置limit,但这不是很高效。那么,有什么好方法?


灵感来自这里

(1(https://dev-blog.apollodata.com/auth-in--in-graphql-part-part-part-part-c6441bcc4302

(2(https://dev-blog.apollodata.com/graphql-at-face-face-bby-by-dan-schafer-38d65ef075af

(1(通过

解决
export const DB = {
  Lists: {
    all: (user_id) => {
      return sql.raw("SELECT id FROM lists WHERE owner_id is NULL or owner_id = %s, user_id);
    }
  }
}

作为查询,然后滤除可以读取哪个行的

resolve: (root, _, ctx) => {
    // factor out data fetching
    return DB.Lists.all(ctx.user_id)
      .then( lists => {
        // enforce auth on each node
        return lists.map(auth.List.enforce_read_perm(ctx.user_id));
      });
  }

因此,我们可以清楚地看到,即使第一个论点是1,这是我要避免的。

也许我在某种程度上将问题处理在某种程度上,因为业务逻辑生活在DB One以外的另一层上,因此除了查询所有行之外,别无选择。任何帮助。

用于将来的参考和其他搜索解决方案的人。使用数据加载器来解决身份验证问题。

实际上实施了他们在https://dev-blog.apollodata.com/graphql-at-face-face-by-dan-schafer-38d65ef075af中所做的事情,并将此样品板库作为指导。

不再说要说

最新更新