限制不能使用最近三次的历史密码
生活随笔
收集整理的這篇文章主要介紹了
限制不能使用最近三次的历史密码
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
開發(fā)的軟件中是允許用戶可以更自己的密碼,現(xiàn)在客戶有這樣一個(gè)要求,是當(dāng)用戶更新密碼時(shí),要限制用戶不能重新使用最近三次的歷史密碼。
實(shí)現(xiàn)客戶的要求,唯有在數(shù)據(jù)庫(kù),創(chuàng)建一個(gè)密碼更新Log表,然后再為Member表寫一個(gè)觸發(fā)器,每當(dāng)用戶更新密碼時(shí),去檢索這個(gè)Log表,看看這次更新的密碼是否存在Log表中,如果存在,提示用戶,返之繼續(xù)更新動(dòng)作,然后把更新的信息插入Log表中,最后是刪除Log記錄,只保留此用戶最近三次記錄。
相關(guān)代碼,可以參考:
MemberPasswordChangeLog CREATE?TABLE?MemberPasswordChangeLog(
????Log_Id?INT?IDENTITY(1,1)?PRIMARY?KEY?NOT?NULL,
????MemberId?INT?NOT?NULL,
????PWD_Value?NVARCHAR(100)?NOT?NULL,
????Log_Date?DATETIME?DEFAULT(GETDATE())?NOT?NULL
)
GO
?
觸發(fā)器:
tri_Member_Update CREATE?TRIGGER?[dbo].[tri_Member_Update]?ON?[dbo].[Member]
FOR?UPDATE
AS
BEGIN
????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??--比較新舊兩個(gè)值,如果不一樣,會(huì)員更新密碼
????BEGIN
????????--去檢查MemberPasswordChangeLog表,看看最近用戶更新密碼的情況
????????IF?EXISTS(SELECT?TOP?1?1?FROM?[dbo].[MemberPasswordChangeLog]?WHERE?[MemberId]?=?@MemberId?AND?[PWD_Value]?=?@N_Value)
????????BEGIN
????????????RAISERROR(N'不能使用最近三次的歷史密碼。',16,1)
????????????RETURN?
????????END
????????
????????--把更新數(shù)據(jù)插入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?ORDER?BY?[Log_Date]?DESC
????????)
????END????
END
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/insus/archive/2012/01/30/2332013.html
總結(jié)
以上是生活随笔為你收集整理的限制不能使用最近三次的历史密码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模拟windows任务管理器列举系统进程
- 下一篇: 分享一个帮助用户全屏阅读的jQuery插