Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GraphQL授权/权限_Graphql_Graphql Js - Fatal编程技术网

GraphQL授权/权限

GraphQL授权/权限,graphql,graphql-js,Graphql,Graphql Js,那么基本上你是如何处理权限的呢 假设我们有一个某种类型的帖子列表,其中有一个参数first来限制帖子的数量。只有所有者和被批准的用户才能阅读帖子,其他人不能。实现这一点的最佳方式是什么 query { { viewer { posts(first: 10) { id text } } } } 我现在想的是,对于用户是否能够阅读帖子,有一个单一的真实来源,并将其与dataloader模块连接起来 但是,我如何查询准确

那么基本上你是如何处理权限的呢

假设我们有一个某种类型的帖子列表,其中有一个参数first来限制帖子的数量。只有所有者和被批准的用户才能阅读帖子,其他人不能。实现这一点的最佳方式是什么

query {
  {
    viewer {
      posts(first: 10) {
        id
        text
      }
    }
  }
}
我现在想的是,对于用户是否能够阅读帖子,有一个单一的真实来源,并将其与
dataloader
模块连接起来

但是,我如何查询准确的10个帖子呢?如果我查询我的数据库中正好有10行,当我稍后用一些业务逻辑过滤它们时,我可以得到例如返回的8篇文章

一个解决方案是不在查询上设置
限制,但这不是很有效。那么,什么是解决这个问题的好方法呢


灵感来自这里

(一)

(二)

(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层之外的另一层,所以除了查询所有行之外,别无选择。非常感谢您的帮助。

供将来参考和其他寻求解决方案的人使用。 使用Dataloader解决身份验证问题


从字面上实现了他们在中所做的,并用作指导。没什么可说的。

供将来参考和其他寻求解决方案的人使用。 使用Dataloader解决身份验证问题


从字面上实现了他们在中所做的,并用作指导。除此之外,没什么可说的。

您可以通过多种方式使用GraphQL处理身份验证和权限,基本上由您决定是否采用适当的方法:)只想为您指出另外两种可能有用的资源。1.2017年阿波罗日的演讲非常精彩。我们在GraphTool中实现权限的方式:您可以通过多种方式使用GraphQL处理身份验证和权限,基本上由您决定是否采用适当的方法:)只想向您指出另外两种可能有用的资源。1.2017年阿波罗日的演讲非常精彩。我们在GraphTool中实现权限的方式: