Permissions Hasura选择表关系的权限

Permissions Hasura选择表关系的权限,permissions,graphql,hasura,Permissions,Graphql,Hasura,我正在建立一个论坛。我有一个非常简单的数据库设置: Users: id, display_name, email, profile Posts: id, title, content, user_id 用户id是用户表的外键 权限: 对于插入/更新,X-Hasura-User-Id必须等于插入Users和Posts表的Id和User_Id。(因此他们只能修改自己的帖子) 对于选择,我有它,用户可以阅读任何帖子,但他们只能选择id=X-Hasura-user-id的用户行。这样用户只能读取他们

我正在建立一个论坛。我有一个非常简单的数据库设置:

Users: id, display_name, email, profile

Posts: id, title, content, user_id
用户id是用户表的外键

权限:

对于插入/更新,X-Hasura-User-Id必须等于插入Users和Posts表的Id和User_Id。(因此他们只能修改自己的帖子)

对于选择,我有它,用户可以阅读任何帖子,但他们只能选择id=X-Hasura-user-id的用户行。这样用户只能读取他们的配置文件数据

然而,对于选择,我显然需要用户能够访问用户表的display_名称,以显示文章的作者

现在我可以很明显地为select设置,他们只能访问这个字段,并且一切正常。我可以返回一个显示帖子和作者的GQL查询

但这是否也意味着用户可以对Users表运行一个查询,并获得所有display_名称的列表,基本上显示我有多少用户

是否有一种方法可以设置为用户只能从用户表中选择自己的信息,但如果查询“来自”服务器,则可以访问显示名称?我知道有管理员角色等,但我不认为这适用于这里

但这是否也意味着用户可以对Users表运行一个查询,并获得所有display_名称的列表,基本上显示我有多少用户

是否有一种方法可以设置为用户只能从用户表中选择自己的信息,但如果查询“来自”服务器,则可以访问显示名称

没有


从用户数量的角度考虑数据泄漏是一个值得关注的问题。但总的来说,我不会为此担心

但是,您可以采取一些措施来防止此问题

您可以做的是:

  • 限制每个请求的行数()

  • 确保
    用户
    不允许聚合查询()


您还可以创建一个视图,将
display\u name
加入并添加到
posts
表中。

谢谢。很高兴知道我的想法是正确的,而且没有什么安全功能我不知道!我已经按照您建议的方式实现了它-谢谢!很乐意帮忙。如果你认为我的回答足够的话,你可以把我的回答标记为接受。