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