Cake PHP 2 пользовательская база данных / миграция пароля для Cake php 4 - PullRequest
0 голосов
/ 20 апреля 2020

У моего клиента есть программа, созданная с помощью Cake PHP 2 (не мой проект), и он хочет обновить ее до новейшего Cake PHP.

. Я заметил, что существует учебник для Custom Password Hasher. (legacy / sha1 + blowfi sh), но он устарел с 4.0 и должен использовать плагин аутентификации.

Как я могу выполнить такую ​​процедуру, не касаясь основного кода, который проверяет, требуется ли пароль для повторного ввода sh а затем создать новый ха sh в базе данных?

На loadAuthenticator я не могу поставить другой хеш для этого.

1 Ответ

0 голосов
/ 21 апреля 2020

Да, но старый действительный пользователь выдает при входе в систему «Аутентификация \ Аутентификатор \ Объект результата ([_status: protected] => FAILURE_IDENTITY_NOT_FOUND [_data: protected] => [_errors: protected] => Массив ([Пароль] => Массив ( ))) "

и у вновь созданного пользователя с новым есть Аутентификация \ Аутентификатор \ Объект результата ([_status: protected] => SUCCESS et c ..

Я сделал эту проверку с помощью этот учебник, но как он может быть действительным, если он не "существует"? SQL -запрос возвращает 1 строку со старым письмом пользователя.

public function login() {
    $this->viewBuilder()->setLayout('login');


    if($this->request->is(['post','put'])) {


        $result = $this->Authentication->getResult();

        // regardless of POST or GET, redirect if user is logged in
        if ($result->isValid()) {
            $authService = $this->Authentication->getAuthenticationService();

            // Assuming you are using the `Password` identifier.
            if ($authService->identifiers()->get('Password')->needsPasswordRehash()) {
                // Rehash happens on save.
                $user = $this->Users->get($this->Authentication->getIdentityData('id'));
                $user->password = $this->request->getData('password');
                $this->Users->save($user);
            }

            // Redirect to a logged in page
            return $this->redirect([
                'controller' => 'Pages',
                'action' => 'display',
                'home'
            ]);
        }
    }
}

Он никогда не войдет внутрь "result-> isvalid ()" со старым пользователем.

...