1

ログイン後にユーザーのパスワードを確認したい。

これを行う最も簡単な方法は何ですか?

ログイン アクションとログアウト アクションを持つユーザー コントローラーがあり、次に認証ログイン アクションを持つアプリ コントローラーがあります。

私がやりたいことは、2 つのことのうちの 1 つを確認することです: パスワードが過去 3 か月以内に変更された場合、またはパスワードが空である場合、またはユーザー名と同じ場合。

これら 3 つの条件のいずれかが満たされた場合、ユーザーは新しいパスワードの入力を求められます。これを達成するにはどうすればよいですか?

4

1 に答える 1

1

まず、パスワードが最後に変更された日付を保存する必要があります。したがって、users テーブルは次のようになります: id、login、password、pwd_date

次に、AppController->login() メソッド内に、次のような数行のコードを追加する必要があります。

$user = $this->User->findById($this->Auth->getUser('id'));
if ($user['User']['pwd_date'] < strtotime('-3 months') || '' == trim($user['User']['password'])){
    promptViewToShowMustResetPassword();
}

ここで、ユーザー名と|パスワードが同じかどうかを確認するには、ユーザーのモデル内でカスタム検証ルールとして設定し、パスワードにユーザー名を使用できないようにする必要があります。

于 2013-03-11T08:18:20.457 に答える