我想在登录后检查用户的密码。
最简单的方法是什么?
我有一个具有登录和注销操作的用户控制器,然后我有一个具有身份验证登录操作的应用控制器。
我想做的是检查两件事中的一件:如果密码在过去 3 个月内更改过,或者密码是否为空,或者与用户名相同。
如果满足这 3 个条件中的任何一个,则会提示用户输入新密码。我将如何实现这一目标?
我想在登录后检查用户的密码。
最简单的方法是什么?
我有一个具有登录和注销操作的用户控制器,然后我有一个具有身份验证登录操作的应用控制器。
我想做的是检查两件事中的一件:如果密码在过去 3 个月内更改过,或者密码是否为空,或者与用户名相同。
如果满足这 3 个条件中的任何一个,则会提示用户输入新密码。我将如何实现这一目标?
首先,您必须存储上次更改密码的日期。所以用户表看起来像:id、登录名、密码、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();
}
现在,至于检查用户名和|密码是否相同,您需要在模型中为您的用户设置它作为自定义验证规则,并使其不允许使用用户名作为密码。