jwt - 函数符号(json,未知)不存在
问题描述
我正在关注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;
$$;
当我尝试执行登录请求时,我收到以下错误消息:
{ "hint": "没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。", "details": null, "code": "42883", "message": "function public.sign (json,未知)不存在”}
我在教程中的任何地方都没有看到符号功能,有人知道这里发生了什么吗?
解决方案
安装pgjwt时会创建 sign 函数。
此外,请确保将扩展安装在包含在您的search_path(导入的模式列表)中的模式上。这可以通过做来指定CREATE EXTENSION pgjwt WITH SCHEMA public
。
PostgRESTpublic
默认在 上添加模式search_path
,因此扩展应该在没有额外配置的情况下工作。
推荐阅读
- python - Tensorflow DecodeJPEG:预期的图像(JPEG、PNG 或 GIF),格式未知,以 '\000\000\000\000\000\000\000\00' 开头
- html - 我希望创建一个具有图表或某种类型的视觉辅助工具的论坛,以显示该论坛有多少成员?
- docker - 意外耗尽了 Kubernetes 中的所有节点(甚至是主节点)。我怎样才能把我的 Kubernetes 带回来?
- azure - Set-AzWebAppSlot 能否仅覆盖 1 个应用程序设置?
- reactjs - 导出 + 导入对象与上下文
- css - 如何计算一个 div 的宽度并使其所有兄弟姐妹采用最大尺寸,以便使用 CSS 看起来一致?
- sql - TSQL多列上的多个搜索条件
- node.js - 亚马逊 lex 问题分岔
- react-native - 在反应原生的屏幕之间移动
- python - 如何为我的 python 项目添加背景?