Jwt 函数符号(json,未知)不存在
我正在学习有关的教程 我创建了这个函数:Jwt 函数符号(json,未知)不存在,jwt,postgrest,Jwt,Postgrest,我正在学习有关的教程 我创建了这个函数: 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_rol
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;
$$;
当我尝试执行登录请求时,会收到以下错误消息:
{
“提示”:“没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。”,
“详细信息”:空,
“代码”:“42883”,
“消息”:“函数public.sign(json,未知)不存在”}
我在教程的任何地方都没有看到签名功能,有人知道这里发生了什么吗?签名功能是在安装时创建的 此外,请确保在包含在您的(导入的模式列表)中的模式上安装扩展。这可以通过使用模式public创建扩展pgjwt来指定
PostgREST默认情况下在
搜索路径
上添加公共
架构,因此扩展不需要额外配置就可以工作。安装时会创建签名
功能。正确,我以为pgjwt安装正确,但没有。很好!我将添加一个详细的答案。