Postgresql限制用户登录错误次数的实例代码( 二 )

  
raise notice ‘Account % is locked!’,res;  
end loop;  
end;  
$$ language plpgsql strict;  
4、编辑postgresql.conf文件,配置登录函数  
session_preload_libraries=’session_exec’  
session_exec.login_name=’lock_user’  
   
5、测试  
模拟test1用户登录错误超过3次:  
bill=# select * from t_login;  
     login_time     | user_name | flag   
—————————-+———–+——  
 2020-08-26 07:26:45.42+08 | test1   |  1  
 2020-08-26 07:26:50.179+08 | test1   |  1  
 2020-08-26 07:26:52.487+08 | test1   |  1  
 2020-08-26 07:26:54.537+08 | test1   |  1  
(4 rows)  
   
当我们在使用test1用户登录时则无法连接  
-> psql bill test1  
Password for user test1:   
NOTICE: c1 = <NULL>  
psql: error: could not connect to server: FATAL: terminating connection due to administrator command  
CONTEXT: SQL statement “select pg_terminate_backend(pid) from pg_stat_activity where usename=$1”  
PL/pgSQL function lock_user() line 13 at EXECUTE  
再次登录可以看到提示该用户被锁定:  
-> psql bill test1  
Password for user test1:   
psql: error: could not connect to server: FATAL: role “test1” is not permitted to log in  
   
6、解锁用户  
此时想要解锁该用户则需要执行:  
bill=# alter user test1 login;  
ALTER ROLE  
然后需要注意还要将t_login中过期的数据修改 。  
bill=# update t_login set flag = 0;  
UPDATE 4  
文章来源:脚本之家  
来源地址:https://www.jb51.net/article/208018.htm  
申请创业报道,分享创业好点子 。,共同探讨创业新机遇!  


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。