1
resposta

Problema autenticação CakePHP

Boa noite, eu estou enfrentando problemas para autenticar um usuário utilizando CakePHP, mesmo que eu colocando o usuário e senha corretos, tenho o retorno de quem um dos 2 estão incorretos. Segue abaixo meu código:

UsersController

   <?php
/**
 * Created by PhpStorm.
 * User: Roger
 * Date: 02/12/2018
 * Time: 16:31
 */

namespace App\Controller;


use Cake\Event\Event;

class UsersController extends AppController
{
    public function beforeFilter(Event $event)
    {
        parent::beforeFilter($event); // TODO: Change the autogenerated stub

        $this->Auth->allow(['adicionar', 'salvar']);
    }

    public function adicionar()
    {
        $usersTable = $this->getTableLocator()->get('Users');
        $user = $usersTable->newEntity();

        $this->set('user', $user);
    }

    public function salvar()
    {
        $usersTable = $this->getTableLocator()->get('Users');
        $user = $usersTable->newEntity($this->request->getData());

        if ($usersTable->save($user))
            $this->Flash->set("Usuário cadastrado com sucesso");
        else
            $this->Flash->set("Erro ao cadastrar o usuário");

        $this->redirect('users/adicionar');
    }

    public function login()
    {
        if ($this->request->is('post')) {
            $user = $this->Auth->identify();

            if ($user) {
                $this->Auth->setUser($user);
                return $this->redirect($this->Auth->redirectUrl());
            } else {
                $this->Flash->set("Usuario ou senha inválidos", ['element' => 'error']);
            }
        }
    }

}

User

<?php
/**
 * Created by PhpStorm.
 * User: Roger
 * Date: 02/12/2018
 * Time: 19:17
 */

namespace App\Model\Entity;


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

class User extends Entity
{
    protected $_accessible = [
        '*' => true,
        'id' => false
    ];

    public function _setPassword($password)
    {
        return (new DefaultPasswordHasher)->hash($password);
    }

}

Muito obrigado desde já.

1 resposta

Oi Roger, tudo bom?

Dei uma pesquisada no seu problema e pode estar relacionado ao tamanho reservado no banco de dados pra sua senha. Verifica quantos caracteres estão definidos na tabela User para o campo senha e garante que seja um varchar(255).

Isso pode acontecer porque o novo método de criptografia padrão do cake mudou nas ultimas versões e acaba gerando um hash maior, quando o campo no banco não está com espaço suficiente, ele corta o texto e nunca vai bater com a senha na hora de autenticar =)

Qualquer problema é só falar.

Abraço