【问题标题】:Hasura SELECT permissions for table relationships表关系的 Hasura SELECT 权限
【发布时间】:2020-10-03 01:23:59
【问题描述】:

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

Users: id, display_name, email, profile

Posts: id, title, content, user_id

user_id 是用户表的外键。

权限:

对于插入/更新,X-Hasura-User-Id 必须等于 id 和 user_id 才能插入到 Users 和 Posts 表中。 (所以他们只能修改自己的帖子)

对于选择,我有它,因此用户可以阅读任何帖子,但如果 id = X-Hasura-User-Id,他们只能选择用户的行。这样用户就只能读取他们的个人资料数据。

但是,为了选择,我显然需要用户能够访问用户表的 display_name,以显示帖子的作者。

现在我显然可以让它选择,他们只能访问这个字段,并且一切正常。我可以返回一个显示帖子和作者的 GQL 查询。

但这是否也意味着用户只需对 Users 表运行查询并获取所有 display_names 的列表,本质上显示我有多少用户?

有没有办法设置它,以便用户只能从用户表中选择他们自己的信息,但是如果查询是“来自”服务器,它可以访问 display_name?我知道有管理员角色等,但我认为这不适用于这里。

【问题讨论】:

    标签: permissions graphql hasura


    【解决方案1】:

    但这是否也意味着用户只需对 Users 表运行查询并获取所有 display_names 的列表,本质上显示我有多少用户?

    是的

    有没有办法设置它,以便用户只能从用户表中选择自己的信息,但是如果查询“来自”服务器,它可以访问 display_name?

    没有


    就您拥有多少用户而言,担心数据泄露是一个合理的担忧。但总的来说我不会担心。

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

    你可以做的是:

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

    【讨论】:

    • 谢谢。很高兴知道我以正确的方式考虑它,并且没有某种我不知道的安全功能!我已经按照您建议的方式实现了它 - 谢谢!
    • 乐于助人。如果您认为我的回答足够,您可以将我的回答标记为我认为已接受。
    猜你喜欢
    • 2020-12-20
    • 2020-06-20
    • 2021-09-14
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 2019-09-23
    相关资源
    最近更新 更多