Ошибка: класс «App\Model\Entity\DefaultPasswordHasher» не найден

<?php
namespace App\Model\Entity;

use Cake\ORM\Entity;

/**
 * User Entity.
 */
class User extends Entity
{

    /**
     * Fields that can be mass assigned using newEntity() or patchEntity().
     * Note that '*' is set to true, which allows all unspecified fields to be
     * mass assigned. For security purposes, it is advised to set '*' to false
     * (or remove), and explicitly make individual fields accessible as needed.
     *
     * @var array
     */
    protected $_accessible = [
        '*' => true,
        'id' => false,
    ];

    protected function _setPassword($value)
    {
        $hasher = new DefaultPasswordHasher();
        return $hasher->hash($value);
    }
}

Вот мой код в user.php. Я хеширую пароль и получаю эту ошибку

Ошибка: класс 'App\Model\Entity\DefaultPasswordHasher' не найден. Файл C:\xamp\htdocs\bookmarker\src\Model\Entity\User.php. Строка: 27.


person Asif Mehmood    schedule 10.09.2015    source источник


Ответы (3)


Мне не хватило следующей строки:

use Cake\Auth\DefaultPasswordHasher;

Это было причиной, почему я получил ошибку.

person Asif Mehmood    schedule 10.09.2015
comment
Я получаю Error: syntax error, unexpected '?' на этой линии. Любая подсказка? - person JackTheKnife; 30.11.2016
comment
@JackTheKnife проверьте свой синтаксис. - person Vishal Kumar Sahu; 22.06.2017

Если вы используете cakephp version 4.0 и уже включили эти два для хэширования пароля в свой php-файл

use Authentication\PasswordHasher\DefaultPasswordHasher;



{
    $hasher = new DefaultPasswordHasher();
    return $hasher->hash($password);
}

как упоминается в официальной документации cakephp 4.0: -

https://book.cakephp.org/authentication/2/en/index.html

И все еще получаю такую ​​​​ошибку: -

Undefined type 'Authentication\PasswordHasher\DefaultPasswordHasher'. intelephense(1009) [50,23]

.

.

Затем вместо использования: -

 use Authentication\PasswordHasher\DefaultPasswordHasher;


 $hasher = new DefaultPasswordHasher();

использовать это:-

 use Cake\Auth\DefaultPasswordHasher as AuthDefaultPasswordHasher;

 $hasher = new AuthDefaultPasswordHasher();
person Anurag Dabas    schedule 16.09.2020

Пожалуйста, используйте это:

protected function _setPassword($value) {
    return sha1($value);
}
person RAHUL PATEL    schedule 10.07.2018
comment
Хотя вы, вероятно, не имеете дело с высоким уровнем безопасности, стоит отметить, что sha1 теперь считается скомпрометированным (например, theregister.co.uk/2017/02/23/google_first_sha1_collision) - person almcnicoll; 08.02.2020