我正在尝试使用 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 令牌,当 JWT 令牌无效时它会抱怨适当的错误消息,所以不是这样。
我做错了什么,或者我怎样才能更仔细地调试正在发生的事情?
我正在使用 PostGraphile v4 和 PostgreSQL 10.4