亚洲十八**毛片,国产a久久精品一区二区三区,色综合桃花网,高清精品在线

技術(shù)知識(shí)
NEWS CENTRE
首頁(yè)
>
新聞中心
>
用戶登錄錯(cuò)誤次數(shù)的實(shí)例代碼Postgresql
用戶登錄錯(cuò)誤次數(shù)的實(shí)例代碼Postgresql
2021-08-24 閱讀:3049

文章主要介紹了Postgresql限制用戶登錄錯(cuò)誤次數(shù)的實(shí)例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下。

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

不過像登錄新建會(huì)話觸發(fā)某個(gè)事件這個(gè)需求可以通過hook實(shí)現(xiàn),不過該方法比較復(fù)雜,需要修改內(nèi)核代碼,在客戶端認(rèn)證中添加邏輯,判斷輸入密碼次數(shù)統(tǒng)計(jì)。這里推薦一種比較簡(jiǎn)單的方法實(shí)現(xiàn)類似的功能。

這里我們要使用到session_exec這個(gè)插件,使用該插件會(huì)在登錄時(shí)執(zhí)行一個(gè)指定的function。

下載地址:

https://github.com/okbob/session_exec

下載解壓之后需要進(jìn)行以下配置:

set session_preload_libraries to session_execset

session_exec.login_name to name of your login function

該插件有以下特點(diǎn):

如果函數(shù)不存在則會(huì)進(jìn)行警告;

函數(shù)執(zhí)行失敗則不允許連接。

利用該插件我們可以寫一個(gè)簡(jiǎn)單的函數(shù)來實(shí)現(xiàn)限制用戶登錄錯(cuò)誤次數(shù)的功能。

例子:

1、建立外部表記錄數(shù)據(jù)庫(kù)日志信息。

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、創(chuàng)建表t_login提取數(shù)據(jù)庫(kù)日志中的登錄信息。

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

 

插入登錄信息:

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、創(chuàng)建登錄執(zhí)行的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; --獲取當(dāng)前日志中最新時(shí)間
insert into t_login select log_time,user_name from pglog where command_tag='authentication' and error_severity= 'FATAL' and log_time > c1; --將最新的數(shù)據(jù)插入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 --檢查登錄失敗次數(shù)是否大于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; --斷開當(dāng)前被鎖定用戶會(huì)話
raise notice 'Account % is locked!',res;
end loop;
end;
$$ language plpgsql strict;

4、編輯postgresql.conf文件,配置登錄函數(shù)

session_preload_libraries='session_exec'
session_exec.login_name='lock_user'

 

5、測(cè)試

模擬test1用戶登錄錯(cuò)誤超過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)

 

當(dāng)我們?cè)谑褂胻est1用戶登錄時(shí)則無法連接

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、解鎖用戶

此時(shí)想要解鎖該用戶則需要執(zhí)行:

bill=# alter user test1 login;
ALTER ROLE

然后需要注意還要將t_login中過期的數(shù)據(jù)修改。

bill=# update t_login set flag = 0;
UPDATE 4


13560189272
地址:廣州市天河區(qū)黃埔大道西201號(hào)金澤大廈808室
COPYRIFHT ? 2010-2020 廣州市名聯(lián)網(wǎng)絡(luò)科技有限公司 ALL RIGHTS RESERVED 粵ICP備10203057號(hào)
  • 這里是二維碼
亚洲十八**毛片,国产a久久精品一区二区三区,色综合桃花网,高清精品在线
亚洲精品视频一区二区| 久久久777精品电影网影网| 国产精品久久久久国产精品日日| 国产精品资源在线看| 欧美猛男男办公室激情| 欧美一区二区三区在线电影| 精品国产乱码久久| 六月丁香综合在线视频| 欧美在线视频全部完| 国产午夜精品福利| 国产精品一区在线观看你懂的| 欧美视频中文字幕| 91老师片黄在线观看| 国产精品嫩草影院av蜜臀| 18成人在线观看| 国产99一区视频免费| 久久先锋影音av鲁色资源网| 日日欢夜夜爽一区| 丁香另类激情小说| 五月天欧美精品| 国产欧美中文在线| 亚洲国产精品久久人人爱| 国产拍欧美日韩视频二区| 国产精品免费人成网站| 在线观看www91| 欧美日韩在线不卡| 欧美色电影在线| 一区二区三区在线视频观看58| 在线视频国内一区二区| 欧美一区二区播放| 日韩一区二区三区av| 亚洲成av人综合在线观看| 图片区小说区区亚洲影院| 亚洲成a人v欧美综合天堂| 国产99久久久精品| 欧美r级电影在线观看| 美女视频网站黄色亚洲| 亚洲3atv精品一区二区三区| 欧美三级中文字幕在线观看| 国产女主播视频一区二区| 99国产精品久久久久| 国产精品美女久久久久久久网站| 717成人午夜免费福利电影| 国产日本一区二区| 91小视频在线观看| 日本vs亚洲vs韩国一区三区二区| 中文字幕在线一区二区三区| 久久综合色婷婷| 亚洲欧美色一区| 亚洲三级电影网站| 欧美激情一区不卡| 欧美性感一区二区三区| 欧美一区二区三区日韩| 亚洲va欧美va天堂v国产综合| 欧美久久婷婷综合色| 亚洲成va人在线观看| 麻豆久久久久久| 亚洲美女淫视频| 同产精品九九九| 欧美性大战xxxxx久久久| 亚洲色欲色欲www在线观看| 欧美喷水一区二区| 日韩avvvv在线播放| 亚洲青青青在线视频| 欧美在线免费播放| 欧美群妇大交群的观看方式| 麻豆成人久久精品二区三区红| 1区2区3区精品视频| 欧美日韩不卡视频| 午夜av区久久| 亚洲国产成人av好男人在线观看| 国产欧美va欧美不卡在线| 激情另类小说区图片区视频区| 欧美特级限制片免费在线观看| 26uuu久久天堂性欧美| 91精品久久久久久久91蜜桃| 亚洲精品乱码久久久久久日本蜜臀| 国产毛片精品一区| 91精品国产黑色紧身裤美女| 国模冰冰炮一区二区| 欧美日韩一区不卡| 色综合久久99| 日韩视频免费观看高清完整版| 国产成人免费av在线| 色www精品视频在线观看| 欧美午夜视频网站| 精品国产伦理网| 国产欧美日韩综合精品一区二区| 欧美视频自拍偷拍| 日韩一区二区三区免费看| 成人app下载| 天天色综合天天| 不卡在线视频中文字幕| 欧美午夜电影网| 日韩精品1区2区3区| 成人91在线观看| 7777女厕盗摄久久久| 日韩激情在线观看| 中文字幕成人av| 日韩欧美高清dvd碟片| 欧美性生活久久| 激情综合网av| 色网站国产精品| 欧美日韩久久久久久| 午夜久久久久久| 久久久国产一区二区三区四区小说| 狠狠色伊人亚洲综合成人| 国产不卡视频在线播放| 亚洲主播在线播放| 欧美日韩国产精选| 久久精品999| 97久久精品人人做人人爽| 青娱乐精品视频在线| 一区二区视频免费在线观看| 国产一区欧美二区| 国产精品中文欧美| 老司机精品视频导航| 亚洲综合免费观看高清完整版| 99精品黄色片免费大全| 精品国产伦一区二区三区观看方式| 91视频在线看| 中文字幕不卡一区| 国产精品久久久久久久久免费丝袜| 国产精品日日摸夜夜摸av| 国产精品一二三在| 国产成人鲁色资源国产91色综| 亚洲女人****多毛耸耸8| 久久精品国产久精国产爱| 精品视频一区二区三区免费| 亚洲色图视频网| 亚洲国产日韩a在线播放| 欧美日本精品一区二区三区| 另类专区欧美蜜桃臀第一页| 亚洲欧美偷拍卡通变态| 不卡的av中国片| 欧美日韩一区视频| 综合中文字幕亚洲| 综合电影一区二区三区| 成人污视频在线观看| 国产午夜精品久久久久久久| 92国产精品观看| 欧美激情一区二区三区| 久久精品免费观看| 亚洲欧美日韩一区二区三区在线观看| 成人深夜福利app| 99久久伊人久久99| 粉嫩av亚洲一区二区图片| 狠狠色2019综合网| 国产欧美一区二区三区在线老狼| 综合久久综合久久| 亚洲精选免费视频| 亚洲国产精品ⅴa在线观看| 国产福利91精品| 国产亚洲污的网站| 午夜精品久久久久久久久久| 欧美在线一区二区三区| 国产精品免费久久| www精品美女久久久tv| 成人教育av在线| 精品91自产拍在线观看一区| 欧美一卡2卡三卡4卡5免费| 亚洲天堂av老司机| 久久综合色综合88| 欧美日本一区二区三区四区| 日韩免费观看2025年上映的电影| 精品一区二区免费视频| 亚洲欧美自拍偷拍色图| 乱中年女人伦av一区二区| 欧美日韩国产高清一区二区| 色香色香欲天天天影视综合网| 色综合天天综合给合国产| 一区二区三区四区乱视频| 国产清纯白嫩初高生在线观看91| 亚洲精品国产品国语在线app| 亚洲欧美精品午睡沙发| 欧美日韩视频一区二区| 久久精品在线观看| 亚洲一区二区精品久久av| 91免费观看视频| 99精品一区二区| 午夜视频在线观看一区| 在线欧美日韩国产| www一区二区| 欧美va亚洲va在线观看蝴蝶网| 欧美日韩1234| 精品日韩av一区二区| 日本韩国精品一区二区在线观看| 中文子幕无线码一区tr| 亚洲欧洲国产日本综合| 日韩精品五月天| 日韩精品在线网站| 精品国产人成亚洲区| 日韩一区二区三区高清免费看看| 91老师国产黑色丝袜在线| 国产日韩欧美一区二区三区综合| 国产精品久久一级| 国产成人夜色高潮福利影视| 欧美国产综合一区二区| 精品在线一区二区三区| 日本vs亚洲vs韩国一区三区|