首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Hasura对象权限的授权

基于Hasura对象权限的授权
EN

Stack Overflow用户
提问于 2021-07-02 10:55:03
回答 2查看 172关注 0票数 0

我正在尝试为Hasura设置一个“行选择”权限。我有一个(简化为简洁)数据模型,如下所示

用户

代码语言:javascript
复制
id: UserID

应用程序

代码语言:javascript
复制
id: AppID

App权限

代码语言:javascript
复制
user_id: User ID
app_id: App ID
permissions: [ ENUM: Admin, View, Owner ]

馈送

代码语言:javascript
复制
app_id: AppID
feed_data: Some Feed Data

现在,我希望查询通过身份验证的用户的所有Feed。查询的形式可以是

  • 获取所有应用程序,通过身份验证的用户对这些应用具有视图权限

代码语言:javascript
复制
query MyQuery {
  feed(limit: 10) {
    app_id
    feed_data
  }
}

  • 在查询筛选器中获取具有app_id的应用程序,通过身份验证的用户对其具有视图权限

代码语言:javascript
复制
query MyQuery {
  feed(limit: 10, where: {app_id: {_in: [1, 2]}}) {
    app_id
    feed_data
  }
}

由于feed表中没有直接包含user_id信息,所以不能对feed表直接使用X-Hasura-User-Id属性。我还尝试对_exists表使用app_permission关系,但无法在app_id子句中添加app_id筛选器。

代码语言:javascript
复制
{
  "_exists": {
    "_where": {
      "user_id": {
        "_eq": "X-Hasura-User-Id"
      }
    },
    "_table": {
      "schema": "public",
      "name": "app_permission"
    }
  }
}

我不太清楚如何与Hasura进行这样的数据建模。任何帮助都是非常感谢的。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2021-07-02 12:22:15

由于您没有直接的关系,我认为您可以通过appPermissions表进行查询,而不是直接查询提要表。

当您使用feeds作为外键关系创建appId表时,Hasura允许您跟踪这种关系,如下所示

通过这种方式,可以对graphQL表进行嵌套的appPerms查询,如下所示

代码语言:javascript
复制
query GetUserFeeds {
  test_appPerms {
    id
    userId
    feeds(limit: 10) {
      app_id
      id
      feed_data
    }
  }
}

票数 1
EN

Stack Overflow用户

发布于 2021-07-02 14:25:23

我想建议的另一件事是,您可以尝试使用一个类似于x-hasura-app-id的会话变量,在x-hasura-role旁边构建您的权限。

https://hasura.io/docs/latest/graphql/core/auth/authorization/roles-variables.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68223963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档