pgjwt: JSON Web Tokens
Supabase 会自动创建和管理 JWT。它内置于平台中。如果您使用的是 Postgres 15 或更早版本,您不需要 pgjwt 扩展,并且可以安全地禁用它。有关 Supabase 如何处理 JWT 的更多信息,请阅读 Supabase 和 JWT 文档
在 PostgreSQL 17 中,pgjwt 扩展已被弃用。它继续支持使用 PostgreSQL 15 的项目,但在升级到 PostgreSQL 17 之前需要删除。请参阅 升级到 PostgreSQL 17 说明 以获取更多信息。
pgjwt (Postgres JSON Web Token) 扩展允许您在 Postgres 数据库中创建和解析 JSON Web Tokens (JWTs)。JWT 通常用于 Web 应用程序和服务的身份验证和授权。
启用扩展#
- 转到仪表板中的 数据库 页面。
- 在侧边栏中单击 扩展。
- 搜索
pgjwt并启用该扩展。
API#
sign(payload json, secret text, algorithm text default 'HSA256'):使用 algorithm 使用 secret 对包含 payload 的 JWT 进行签名。verify(token text, secret text, algorithm text default 'HSA256'):使用 algorithm 对使用 secret 签名的 JWT token 进行解码。
其中
payload是一个表示为字符串的加密 JWT。secret是用于签名 JWT 并验证其完整性的私钥/密钥。algorithm是使用密钥对 JWT 进行签名的方法。token是一个表示为字符串的加密 JWT。
用法#
安装扩展后,您可以使用其函数来创建和解析 JWT。以下是如何使用 sign 函数创建 JWT 的示例
1select2 extensions.sign(3 payload := '{"sub":"1234567890","name":"John Doe","iat":1516239022}',4 secret := 'secret',5 algorithm := 'HS256'6 );pgjwt_encode 函数返回一个表示 JWT 的字符串,然后可以在各方之间安全地传输该字符串。
1sign2---------------------------------3 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX4 VCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiw5 ibmFtZSI6IkpvaG4gRG9lIiwiaWF0Ijo6 xNTE2MjM5MDIyfQ.XbPfbIHMI6arZ3Y97 22BhjWgQzWXcXNrz0ogtVhfEd2o8(1 row)要解析 JWT 并提取其声明,您可以使用 verify 函数。这是一个例子
1select2 extensions.verify(3 token := 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiRm9vIn0.Q8hKjuadCEhnCPuqIj9bfLhTh_9QSxshTRsA5Aq4IuM',4 secret := 'secret',5 algorithm := 'HS256'6 );它返回解码的内容和一些关联的元数据。
1header | payload | valid2-----------------------------+----------------+-------3 {"alg":"HS256","typ":"JWT"} | {"name":"Foo"} | t4(1 row)资源#
- 官方
pgjwt文档