знак функции (json, неизвестно) не существует - PullRequest
0 голосов
/ 05 мая 2020

Я следую руководству по https://postgrest.org/en/v5.0/auth.html#jwt -from- sql

Я создал эту функцию:

create or replace function
login(email text, pass text) returns basic_auth.jwt_token
  language plpgsql
  as $$
declare
  _role name;
  result basic_auth.jwt_token;
begin
  -- check email and password
  select basic_auth.user_role(email, pass) into _role;
  if _role is null then
    raise invalid_password using message = 'invalid user or password';
  end if;

  select sign(
      row_to_json(r), 'reallyreallyreallyreallyverysafe'
    ) as token
    from (
      select _role as role, login.email as email,
         extract(epoch from now())::integer + 60*60 as exp
    ) r
    into result;
  return result;
end;
$$;

Когда я пытаюсь сделать при запросе на вход я получаю следующее сообщение об ошибке:

{"подсказка": "Ни одна функция не соответствует заданному имени и типам аргументов. Возможно, вам потребуется добавить явное приведение типов.", "детали" : null, "code": "42883", "message": "function publi c .sign (json, unknown) не существует"}

Я не вижу функция подписи в любом месте учебника, кто-нибудь знает, что здесь происходит?

1 Ответ

1 голос
/ 07 мая 2020

Знаковая функция создается при установке pgjwt .

Кроме того, убедитесь, что вы устанавливаете расширение в схему, которая включена в ваш search_path ( список импортированных схем). Это можно указать, выполнив CREATE EXTENSION pgjwt WITH SCHEMA public.

PostgREST по умолчанию добавляет схему public в search_path, поэтому расширение не должно работать без дополнительной конфигурации.

...