login_hook
在用户登陆时执行login_hook.login()函数
仓库
splendiddata/login_hook
https://github.com/splendiddata/login_hook
源码
login_hook-1.7.tar.gz
login_hook-1.7.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
login_hook | 1.7 | SEC | GPL-3.0 | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 7360 | login_hook | 否 | 是 | 否 | 是 | 否 | 否 | login_hook |
| 相关扩展 | pg_session_jwt pg_oidc_validator pgjwt oidc_validator pg_auth_mon auth_delay set_user pgsodium sslinfo sslutils |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | MIXED | 1.7 | 1817161514 | login_hook | - |
| RPM | PGDG | 1.7 | 1817161514 | login_hook_$v | - |
| DEB | PIGSTY | 1.7 | 1817161514 | postgresql-$v-login-hook | - |
构建
您可以使用 pig build 命令构建 login_hook 扩展的 RPM / DEB 包:
BASH
安装
您可以直接安装 login_hook 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
BASH
使用 pig 或者是 apt/yum/dnf 安装扩展:
安装
BASH
pig
BASH
dnf
BASH
apt
BASH
创建扩展:
SQL
用法
login_hook 允许在用户登录数据库时执行自定义 PL/pgSQL 代码。
SQL
配置
添加到 postgresql.conf:
INI
创建登录函数
定义一个 login_hook.login() 函数,该函数将在每次登录时执行:
SQL
需要 PUBLIC 授权,因为该函数会为每个连接用户运行。
函数
| 函数 | 返回类型 | 描述 |
|---|---|---|
login_hook.is_executing_login_hook() | boolean | 仅在登录钩子执行期间调用时返回 true |
login_hook.get_login_hook_version() | text | 返回 login_hook 的编译版本 |
login_hook.login() | void | 用户提供的在登录时执行的函数 |
重要说明
- 该函数不会在后台进程或恢复模式期间被调用
- 在函数内部处理所有异常 —— 失败将阻止普通用户登录
- 超级用户在函数失败时会收到警告但仍可登录
- 对于 PostgreSQL 17+,可考虑使用原生登录事件触发器