限制不能使用最近三次的歷史密碼

2021-09-08 21:41:28 字數 2216 閱讀 4721

開發的軟體中是允許使用者可以更自己的密碼,現在客戶有這樣乙個要求,是當使用者更新密碼時,要限制使用者不能重新使用最近三次的歷史密碼。

實現客戶的要求,唯有在資料庫,建立乙個密碼更新log表,然後再為member表寫乙個觸發器,每當使用者更新密碼時,去檢索這個log表,看看這次更新的密碼是否存在log表中,如果存在,提示使用者,返之繼續更新動作,然後把更新的資訊插入log表中,最後是刪除log記錄,只保留此使用者最近三次記錄。

create

table memberpasswordchangelog

(

log_id 

intidentity(

1,1) 

primary

keynot

null,

memberid 

intnotnull,

pwd_value 

nvarchar(

100) 

notnull,

log_date 

datetime

default(

getdate()) 

notnull

)

go

觸發器:

create

trigger

[dbo

]. [

tri_member_update]on

[dbo

]. [

member

]for

update

asbegin

declare

@memberid

int,

@n_value

nvarchar(

100),

@o_value

nvarchar(

100)

select

@memberid=[

memberid

], @o_value=[

password

]from deleted

select

@o_value=[

password

]from inserted

if@n_value

<>

@o_value

--比較新舊兩個值,如果不一樣,會員更新密碼

begin

--去檢查memberpasswordchangelog表,看看最近使用者更新密碼的情況

ifexists(

select

top1

1from

[dbo

]. [

memberpasswordchangelog

]where

[memberid]=

@memberid

and[

pwd_value]=

@n_value)

begin

raiserror(n

'不能使用最近三次的歷史密碼。

', 16,

1)return

end--

把更新資料插入log表中

insert

into

[dbo

]. [

memberpasswordchangelog

] ( [

memberid

], [

pwd_value

])  values (

@memberid,

@n_value)

--保留最近更新三筆記錄,刪除額外記錄

delete

from

[dbo

]. [

memberpasswordchangelog

]where

[memberid]=

@memberid

and[

log_id

]not

in (

select

top(

3) [

log_id

]from

[dbo

]. [

memberpasswordchangelog

]where

[memberid]=

@memberid

orderby[

log_date

]desc

)

endend

限制不能使用最近三次的歷史密碼

開發的軟體中是允許使用者可以更自己的密碼,現在客戶有這樣乙個要求,是當使用者更新密碼時,要限制使用者不能重新使用最近三次的歷史密碼。實現客戶的要求,唯有在資料庫,建立乙個密碼更新log表,然後再為member表寫乙個觸發器,每當使用者更新密碼時,去檢索這個log表,看看這次更新的密碼是否存在log表...

十類千萬不能使用的密碼

在資訊科技普遍應用的時代,密碼已經成為驗證身份的主要手段,但有些密碼千萬不能使用。1 密碼和使用者名稱相同。如 使用者名稱和密碼都是123456789。幾乎所有盜取密碼的人,都會以使用者名稱作為破解密碼的突破口。2 密碼為使用者名稱中的某幾個鄰近的數字或字母。如 使用者名為test000001,密碼...

數學歷史上的三次危機

經濟上有危機,歷史上數學也有三次危機。第一次危機發生在西元前580 568年之間的古希臘,數學家畢達哥拉斯建立了畢達哥拉斯學派。這個學派集宗教 科學和哲學於一體,該學派人數固定,知識保密,所有發明創造都歸於學派領袖。當時人們對有理數的認識還很有限,對於無理數的概念更是一無所知,畢達哥拉斯學派所說的數...