You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hasura权限配置咨询:如何将权限规则中的_eq值关联至另一数据表的ID字段

解决Hasura权限配置中关联表字段的问题

我懂你现在的困扰——你想让用户只能访问被分配给自己的项目,用_exists操作符关联assigned_item和item表,但不知道怎么把规则里的feed_item_id和目标项目的ID动态关联起来对吧?

先理清楚核心逻辑:如果你的需求是用户只能查询到自己被分配的item(项目),那权限规则应该配置在item表的「Select权限」里,而不是assigned_item表上。下面是正确的配置方式:

{
  "_exists": {
    "_table": {
      "name": "assigned_item",
      "schema": "public"
    },
    "_where": {
      "_and": [
        { "userid": { "_eq": "X-Hasura-User-Id" } },
        { "feed_item_id": { "_eq": "{{ item.id }}" } }
      ]
    }
  }
}

关键改动说明:

  • 用{{ item.id }}替代了原来的固定值XXX,这是Hasura的模板变量语法,用来引用当前item表的id字段,这样Hasura就能自动把assigned_item里的feed_item_id和正在查询的项目ID做匹配。
  • 这个规则的逻辑是:只有当assigned_item表中存在一条记录,满足「用户ID等于当前请求的X-Hasura-User-Id」且「关联的项目ID等于当前查询的item的ID」时,用户才能看到这条项目记录。

如果你的需求其实是用户只能查看自己的assigned_item分配记录,那规则会更简单,直接筛选userid即可,不需要_exists:

{
  "userid": { "_eq": "X-Hasura-User-Id" }
}

额外注意事项:

  • 确保请求中正确传递了X-Hasura-User-Id头,并且Hasura的身份验证配置已经启用了这个头的解析。
  • 检查assigned_item表的userid字段类型和X-Hasura-User-Id的类型一致(比如都是字符串或整数),类型不匹配会导致权限验证失败。
  • 如果item表的主键不是id,记得把{{ item.id }}改成对应的字段名,比如{{ item.project_id }}。

内容的提问来源于stack exchange,提问作者meds

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 09:22:41