校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Postgresql限制用戶登錄錯誤次數的實例代碼

Postgresql限制用戶登錄錯誤次數的實例代碼

熱門標簽:江西穩定外呼系統供應商 中國地圖標注省份用什么符號 高德地圖標注電話怎么沒了 電話機器人錄音師薪資 無錫梁溪公司怎樣申請400電話 北京智能外呼系統供應商家 孝感銷售電銷機器人廠家 智能電銷機器人教育 奧維地圖標注字體大小修改

在oracle中我們可以通過設置FAILED_LOGIN_ATTEMPTS來限制用戶密碼登錄錯誤的次數,但是在postgresql中是不支持這個功能的。盡管PostgreSQL支持event trigger,可是event局限于DDL,對于登錄登出事件是沒辦法使用event trigger的。

不過像登錄新建會話觸發某個事件這個需求可以通過hook實現,不過該方法比較復雜,需要修改內核代碼,在客戶端認證中添加邏輯,判斷輸入密碼次數統計。這里推薦一種比較簡單的方法實現類似的功能。

這里我們要使用到session_exec這個插件,使用該插件會在登錄時執行一個指定的function。

下載地址:

https://github.com/okbob/session_exec

下載解壓之后需要進行以下配置:

  1. set session_preload_libraries to session_execset
  2. session_exec.login_name to name of your login function

該插件有以下特點:

  1. 如果函數不存在則會進行警告;
  2. 函數執行失敗則不允許連接。

利用該插件我們可以寫一個簡單的函數來實現限制用戶登錄錯誤次數的功能。

例子:

1、建立外部表記錄數據庫日志信息。

CREATE SERVER pglog FOREIGN DATA WRAPPER file_fdw;

CREATE FOREIGN TABLE pglog ( 
 log_time timestamp(3) with time zone, 
 user_name text, 
 database_name text, 
 process_id integer,
 connection_from text,
 session_id text, 
 session_line_num bigint, 
 command_tag text, 
 session_start_time timestamp with time zone, 
 virtual_transaction_id text, 
 transaction_id bigint, 
 error_severity text, 
 sql_state_code text, 
 message text, 
 detail text, 
 hint text, 
 internal_query text, 
 internal_query_pos integer, 
 context text, 
 query text, 
 query_pos integer, 
 location text, 
 application_name text,
 backend_type text 
) SERVER pglog 
OPTIONS ( program 'find $PGDATA/log -type f -name "*.csv" -mtime -1 -exec cat {} \;', format 'csv' ); 

2、創建表t_login提取數據庫日志中的登錄信息。

create table t_login
(
login_time timestamp(3) with time zone --插入時間,
user_name text,
flag int --標志位,0代表過期數據
);

插入登錄信息:

bill=# insert into t_login select log_time,user_name from pglog where command_tag='authentication' and error_severity= 'FATAL'
bill-# ;
INSERT 0 4

3、創建登錄執行的function

create or replace function lock_user() returns void as $$
declare
res text;
c1 timestamp(3) with time zone;
begin
select login_time from t_login where flag = 0 order by login_time desc limit 1 into c1; --獲取當前日志中最新時間
insert into t_login select log_time,user_name from pglog where command_tag='authentication' and error_severity= 'FATAL' and log_time > c1; --將最新的數據插入t_login表
update t_login set flag = 1 where login_time > c1; 
for res in select user_name from t_login where flag = 1 group by user_name having count(*) >=3 --檢查登錄失敗次數是否大于3,若大于3則鎖定用戶
loop
EXECUTE format('alter user %I nologin',res); --鎖定用戶
EXECUTE 'select pg_terminate_backend(pid) from pg_stat_activity where usename=$1' using res; --斷開當前被鎖定用戶會話
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用戶登錄時則無法連接

pg13@cnndr4pptliot-> 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

再次登錄可以看到提示該用戶被鎖定:

pg13@cnndr4pptliot-> 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://github.com/okbob/session_exec

到此這篇關于Postgresql限制用戶登錄錯誤次數的文章就介紹到這了,更多相關Postgresql限制用戶登錄錯誤次數內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • PostGreSql 判斷字符串中是否有中文的案例
  • PostgreSQL的中文拼音排序案例
  • 自定義函數實現單詞排序并運用于PostgreSQL(實現代碼)
  • PostgreSQL將數據加載到buffer cache中操作方法
  • 在PostgreSQL中使用ltree處理層次結構數據的方法
  • postgresql 中的時間處理小技巧(推薦)
  • PostgreSQL用戶登錄失敗自動鎖定的處理方案
  • postgresql影子用戶實踐場景分析
  • 如何使用PostgreSQL進行中文全文檢索

標簽:那曲 海北 通化 荊州 泰州 阜陽 臨滄 齊齊哈爾

巨人網絡通訊聲明:本文標題《Postgresql限制用戶登錄錯誤次數的實例代碼》,本文關鍵詞  Postgresql,限制,用戶,登錄,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Postgresql限制用戶登錄錯誤次數的實例代碼》相關的同類信息!
  • 本頁收集關于Postgresql限制用戶登錄錯誤次數的實例代碼的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    一区二区三区四区国产精品| 久久国内精品视频| 美国三级日本三级久久99| 欧美日韩电影在线| 日韩av在线播放中文字幕| 精品久久久影院| 成人aa视频在线观看| 中文字幕一区av| 久久精品人人做人人综合| 国产精品一区二区无线| 亚洲欧美日韩久久精品| 欧美剧情片在线观看| 国产suv精品一区二区883| 一区二区视频在线| 日韩欧美国产午夜精品| 91视频精品在这里| 美女视频黄 久久| 亚洲品质自拍视频| 日韩一区二区三区视频在线| 成人av免费在线播放| 亚洲成a人片综合在线| 国产亚洲午夜高清国产拍精品| 99国产精品久久久久久久久久| 日韩国产欧美三级| 亚洲少妇最新在线视频| 精品成人a区在线观看| 欧美亚洲愉拍一区二区| 成人毛片老司机大片| 美日韩一区二区三区| 亚洲一线二线三线久久久| 国产日产亚洲精品系列| 日韩欧美一区二区久久婷婷| 欧美探花视频资源| 99国产精品国产精品毛片| 国内偷窥港台综合视频在线播放| 一区二区三区中文在线| 国产精品丝袜久久久久久app| 91精品国产乱码| 亚洲国产精品精华液网站| 国产亚洲成aⅴ人片在线观看 | 一区二区三区国产精品| 欧美国产日韩精品免费观看| 久久综合久久综合久久| 日韩一二三四区| 欧美一二三在线| 色婷婷av一区二区三区软件| 福利一区福利二区| 国产麻豆成人传媒免费观看| 精品一区二区三区在线观看国产| 亚洲成人av中文| 亚洲成人免费看| 五月天丁香久久| 麻豆91在线看| 国模娜娜一区二区三区| 黑人精品欧美一区二区蜜桃| 韩国理伦片一区二区三区在线播放| 人人爽香蕉精品| 国产在线不卡视频| 国产成人av电影在线| 国产 日韩 欧美大片| 丁香网亚洲国际| 色婷婷综合激情| 制服丝袜亚洲播放| 久久丝袜美腿综合| 成人欧美一区二区三区白人| 一区二区三区四区五区视频在线观看| 亚洲精品免费视频| 偷拍与自拍一区| 美女尤物国产一区| 成人理论电影网| 欧美老肥妇做.爰bbww| 欧美大片拔萝卜| 国产精品热久久久久夜色精品三区| 成人欧美一区二区三区1314| 日日夜夜免费精品视频| 国产麻豆欧美日韩一区| 一本一本久久a久久精品综合麻豆| 91国内精品野花午夜精品| 在线不卡中文字幕播放| 久久久久久黄色| 亚洲午夜视频在线| 狠狠网亚洲精品| 一本一道久久a久久精品| 日韩视频免费观看高清完整版| 国产亚洲福利社区一区| 亚洲成人综合网站| 成人精品亚洲人成在线| 91精品国模一区二区三区| 久久精品一区二区三区不卡牛牛| 中文字幕在线视频一区| 日韩av一区二区三区| 成人app网站| 欧美精品一区二区久久婷婷| 一区二区三区四区av| 国产精品一卡二卡| 欧美性大战久久久久久久蜜臀| 欧美精品一区二区三区视频| 亚洲gay无套男同| 91色综合久久久久婷婷| 久久精品无码一区二区三区| 亚洲成av人片一区二区| www.激情成人| 国产三级精品三级在线专区| 日韩电影在线一区| 欧美视频一二三区| 亚洲欧美综合网| 福利一区福利二区| 精品久久久久一区二区国产| 亚洲成人先锋电影| 91久久线看在观草草青青| 中文成人av在线| 国产精品99精品久久免费| 欧美一卡在线观看| 婷婷成人激情在线网| 欧美日韩一区二区三区高清| 亚洲你懂的在线视频| 99热精品国产| 亚洲天堂中文字幕| 91首页免费视频| 亚洲最新在线观看| 色婷婷av一区二区三区软件| 成人欧美一区二区三区小说 | 精品少妇一区二区三区日产乱码| 亚洲午夜在线电影| 欧美羞羞免费网站| 亚洲二区在线视频| 欧美色偷偷大香| 亚洲va欧美va国产va天堂影院| 欧美视频一区二区三区四区| 亚洲大片在线观看| 欧美一区二区三区喷汁尤物| 蜜臀精品久久久久久蜜臀| 精品国产人成亚洲区| 韩国三级在线一区| 日本一区二区视频在线| a美女胸又www黄视频久久| 亚洲蜜桃精久久久久久久| 在线免费av一区| 美国毛片一区二区三区| 欧美成人bangbros| 岛国精品在线播放| 综合自拍亚洲综合图不卡区| 一本一道波多野结衣一区二区 | 污片在线观看一区二区| 51久久夜色精品国产麻豆| 精彩视频一区二区| 最新久久zyz资源站| 欧美影视一区二区三区| 蜜桃av一区二区三区电影| 欧美国产精品一区二区三区| 色婷婷精品久久二区二区蜜臀av| 亚洲二区视频在线| 欧美国产欧美亚州国产日韩mv天天看完整 | 亚洲另类一区二区| 欧美一三区三区四区免费在线看| 麻豆91在线观看| 国产精品久久久久久久久免费相片 | 欧美xingq一区二区| 成人高清视频在线观看| 午夜a成v人精品| 欧美国产日本视频| 欧美精品1区2区| a美女胸又www黄视频久久| 日本不卡视频在线| 亚洲精品国产视频| 久久综合九色欧美综合狠狠| 一本在线高清不卡dvd| 狠狠色丁香久久婷婷综合_中| 亚洲三级久久久| 欧美一级免费观看| 日韩毛片精品高清免费| 国产91露脸合集magnet| 亚洲精品一二三| 91精品国产免费久久综合| 国产91精品精华液一区二区三区 | 午夜欧美在线一二页| 欧美韩日一区二区三区| 欧美一区永久视频免费观看| 91在线无精精品入口| 捆绑调教一区二区三区| 亚洲福利一区二区三区| 成人免费一区二区三区视频 | 日韩国产欧美一区二区三区| 国产精品人人做人人爽人人添| 欧美一二三四区在线| 欧美视频在线观看一区| 日本高清无吗v一区| 99久久99久久久精品齐齐| 国产米奇在线777精品观看| 石原莉奈一区二区三区在线观看| 亚洲欧美另类综合偷拍| 国产精品美女久久久久高潮| 久久蜜臀精品av| 久久新电视剧免费观看| 精品捆绑美女sm三区| 精品粉嫩超白一线天av| 精品国产第一区二区三区观看体验 | 欧美va在线播放| 日韩久久久精品| 精品久久五月天|