2012-02-29 5 views
-1

저는 ASP.NET 2.0에서 응용 프로그램을 작성 중이며 암호는 최근 3 개월 C# .net과 일치해서는 안된다는 작업을 제공했습니다. 처음 3 개월 동안 비밀번호 입력란은 null이 될 것입니다. 처음 3 개월 동안 저장 하겠지만 4 번째 월부터는 모든 입력란과 비밀번호를 비교 한 후 첫 번째 입력란에 비밀번호를 저장하는 방법을 알려줍니다. 완전히 갇혔다.암호를 지난 3 개월 암호와 비교하십시오.

답변

2

이 작업을 수행하는 가장 좋은 방법은 userID, 암호 해시 및 타임 스탬프로 구성된 별도의 테이블을 만드는 것입니다. 패스워드가 변경되면 여기에 삽입 할 것이고 타임 스탬프는 삽입시 현재 시간이 될 것입니다. 개수> 0, 그들은 최근 3 개월 이내에 사용했습니다 경우

SELECT count(*) FROM oldpasswords where userid = :p_userid and 
    password = :p_pass and timestamp < DATE_SUB(NOW(), INTERVAL 3 MONTH); 

: 사용자가 암호를 변경하려고 할 때

CREATE TABLE `oldpasswords` (
    `userid` int(11) NOT NULL, 
    `password` varchar(255) NOT NULL default '0', 
    `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP, 
    PRIMARY KEY (`userid`,`password`, `timestamp`) 
); 

그럼 당신은이 테이블을 조회 할 수 있습니다. 그렇지 않으면이 테이블에 삽입하고 주 사용자 테이블 레코드도 변경하십시오.

이 표는 정기적으로 정리할 수도 있습니다.

DELETE FROM oldpasswords WHERE timestamp < DATE_SUB(NOW(), INTERVAL 3 MONTH); 

은 3 개월 이상 된 항목은 삭제할 것이므로 더 이상 필요하지 않으므로 더 이상 필요하지 않습니다.

0

기본적으로 "은퇴 된"암호가 저장되어있는 테이블을보고 있는데,이 테이블은 자신이 소유 한 사용자 계정과 변경된시기가 연관되어 있습니다. 그들이 작업 흐름을 변경 갈 때 이동 : 새 암호가 현재 암호와 동일

  • 선택하면
  • 확인 새 암호 (즉, 사용자와 관련된) "이전 암호"데이터베이스에 있고 시간 내에 떨어지는 경우 그 모두 거짓을 경우,

범위의 변화로 이동 :

  • 는 "이전에 새로운 항목으로 현재 암호를 추가 비밀 번호 "데이터베이스
  • 사용자의 비밀 번호를 변경하여 자신의 프로파일에 다시 저장하십시오.
  • (선택 사항) 걱정되는 것보다 오래된 항목에 대해"이전 암호 "데이터베이스를 정리하십시오.

적어도 내가 그 문제를 해결하는 방법입니다.

관련 문제