2012-02-29 10 views
-1

私はASP.NET 2.0のアプリケーションで作業しています。パスワードは最後の3か月のC#.netと一致しないはずです。 最初の3ヶ月のパスワードフィールドはbです。最初の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

「退職した」パスワードが格納されているテーブルを見ています。そのテーブルは、そのユーザーアカウントが所属するユーザーアカウントと、変更されたときに関連付けられています。彼らは仕事の流れを変更するために行くときに行く:新しいパスワードが現在のパスワードと同じです

  • チェックすると
  • チェック新しいパスワードは、(そのユーザに関連付けられた)「古いパスワード」データベースであり、時間内であれば範囲

それらの両方が変更に移り、ある場合:

  • 「旧への新しいエントリとして現在のパスワードを追加します。 (タイムスタンプ付き)
  • ユーザーのパスワードを新しいパスワードに変更し、プロファイルに戻します。
  • (オプション)気にするより古いエントリの「古いパスワード」データベースを整理します。

少なくとも私はそれにどのように取り組んでいるのですか。

関連する問題