【发布时间】:2021-09-05 08:20:01
【问题描述】:
通过对选择的自定义检查:
{
"_or": [
{
"user": {
"id": {
"_eq": "X-Hasura-User-Id"
}
}
},
{
"feed_item_access": {
"community_allowed_view": {
"_eq": true
}
}
}
]
}
查询需要 8 秒,但是如果我删除 OR 中的两个检查中的任何一个,查询将缩短到 1 秒。
条件检查是什么似乎并不重要,一个很好,一旦有两个它就会停止。
值得注意的是,当有授权标头时,这只会非常缓慢,但即使权限检查不是在寻找 x-hasura-user-id,它似乎也与此无关,它可能很慢。对于管理员查询,这完全没问题。
这似乎主要发生在权限必须查看相关表并且有两个权限时,即使它们正在查看同一个表:
{
"_or": [
{
"feed_item_access": {
"community_allowed_view": {
"_eq": true
}
}
},
{
"feed_item_access": {
"clinicians_allowed_view": {
"_eq": true
}
}
}
]
}
以上处理需要 5 秒以上,如果我删除其中任何一个条件,它会下降到 1 秒以下。
我还应该在我的本地 docker build 上添加它很好,问题只出现在 hasura 托管环境中。
有什么我可能在这里遗漏的想法吗?
【问题讨论】:
标签: postgresql authentication permissions hasura