gpt4 book ai didi

PostgreSQL/PostGraphile 行权限不起作用

转载 作者:行者123 更新时间:2023-11-29 12:52:12 24 4
gpt4 key购买 nike

我正在尝试使用 PostGraphile(以前称为 PostGraphQL)设置一个 GraphQL 服务器,但我无法获得行权限,这意味着我不断收到权限被拒绝的消息,尽管它应该可以工作。这是我的架构:

create function app.current_user() returns app.profile as $$
select *
from app.profile
where id = current_setting('jwt.claims.person_id')::integer
$$ language sql stable;

comment on function app.current_user() is 'Gets the person who was identified by our JWT.';

grant select (name,about,created_at,updated_at) on table app.profile to app_user;
grant update (name,about) on table app.profile to app_user;
alter table app.profile enable row level security;


create policy select_profile on app.profile for select to app_user
using (id = current_setting('jwt.claims.person_id')::integer);

create policy update_profile on app.profile for update to app_user
using (id = current_setting('jwt.claims.person_id')::integer);

据我在调试输出中所见,一切正常。我可以进行身份​​验证,获取 JWT token ,当 JWT token 无效时,它会提示并显示正确的错误消息,所以它不是任何一个。

我哪里做错了,或者我怎样才能更仔细地调试正在发生的事情?

我正在使用 PostGraphile v4 和 PostgreSQL 10.4

最佳答案

我自己发现了问题。事实证明,您必须授予对 id 的权限,即使您不选择它而仅在 WHERE 部分使用它也是如此。

所以在上面的例子中,修改为:

grant select (id,name,about,created_at,updated_at) on table app.profile to app_user;

那么它应该可以工作了。

关于PostgreSQL/PostGraphile 行权限不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51236075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com