Cakephp3身份验证密码未加密

时间:2019-02-13 08:18:51

标签: php authentication cakephp cakephp-3.0

我正在使用cakephp3和auth组件进行登录/注销。 我的[users]表users。[password]列不只是普通字符而加密。 有没有不使用或覆盖身份验证passwordHasher的方法?

3 个答案:

答案 0 :(得分:1)

User.php文件夹中创建一个名为/src/Model/Entity的文件,其中包含以下内容。保存时,它将自动加密您的密码。

use Cake\Auth\DefaultPasswordHasher; 
use Cake\ORM\Entity;

class User extends Entity
{


    protected function _setPassword($value)
    {
        if (strlen($value)) {
            $hasher = new DefaultPasswordHasher();

            return $hasher->hash($value);
        }
    }
}

答案 1 :(得分:1)

您还可以像下面那样在控制器中对密码进行哈希处理。 在控制器中使用密码哈希库。

use Cake\Auth\DefaultPasswordHasher;

现在,您可以使用以下代码像这样对您的密码字符串进行哈希处理。

$password = "Your Password";
$hasher = new DefaultPasswordHasher();
$hasher->hash($password);

答案 2 :(得分:0)

use Cake\Auth\DefaultPasswordHasher;

注册时使用此

$user = $this->Users->newEntity();
$hasher = new new DefaultPasswordHasher();
$user = $this->Users->patchEntity($user, $this->request->getData());
$user->password=$hasher->hash($user->password); //follow this
if ($this->Users->save($user)) {
}