開發的軟體中是允許使用者可以更自己的密碼,現在客戶有這樣乙個要求,是當使用者更新密碼時,要限制使用者不能重新使用最近三次的歷史密碼。
實現客戶的要求,唯有在資料庫,建立乙個密碼更新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年之間的古希臘,數學家畢達哥拉斯建立了畢達哥拉斯學派。這個學派集宗教 科學和哲學於一體,該學派人數固定,知識保密,所有發明創造都歸於學派領袖。當時人們對有理數的認識還很有限,對於無理數的概念更是一無所知,畢達哥拉斯學派所說的數...