限制不能使用最近三次的历史密码
生活随笔
收集整理的這篇文章主要介紹了
限制不能使用最近三次的历史密码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
開發的軟件中是允許用戶可以更自己的密碼,現在客戶有這樣一個要求,是當用戶更新密碼時,要限制用戶不能重新使用最近三次的歷史密碼。
實現客戶的要求,唯有在數據庫,創建一個密碼更新Log表,然后再為Member表寫一個觸發器,每當用戶更新密碼時,去檢索這個Log表,看看這次更新的密碼是否存在Log表中,如果存在,提示用戶,返之繼續更新動作,然后把更新的信息插入Log表中,最后是刪除Log記錄,只保留此用戶最近三次記錄。
相關代碼,可以參考:
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
?
觸發器:
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??--比較新舊兩個值,如果不一樣,會員更新密碼
????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
????????
????????--把更新數據插入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
?
?
轉載于:https://www.cnblogs.com/insus/archive/2012/01/30/2332013.html
總結
以上是生活随笔為你收集整理的限制不能使用最近三次的历史密码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模拟windows任务管理器列举系统进程
- 下一篇: C#生成XSD规范,利用XmlSchem