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

2022-02-14 01:49:03 字數 2016 閱讀 7990

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

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

memberpasswordchangelog

create

table memberpasswordchangelog

(log_id int

identity(1,1) primary

keynot

null,

memberid int

notnull,

pwd_value nvarchar(100) not

null,

log_date datetime

default(getdate()) not

null)go

觸發器:

tri_member_update

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

)end

end

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

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

十類千萬不能使用的密碼

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

數學歷史上的三次危機

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