Componente de autenticación de usuarios en CakePHP 3

Una de las funcionalidades más comunes dentro de una aplicación web es gestionar a los usuarios bajo un sistema de autenticación, de tal forma estos usuarios puedan acceder al contenido de la aplicación bajo una cuenta que puede estar conformado por un nombre de usuario o correo electrónico y también una contraseña. CakePHP tiene incorporado un potente componente de autenticación para cubrir todas estas necesidades y es lo que vamos aprender en esta nueva lección del curso.

Vamos a partir explicando el propósito del archivo AppController.php ya que es en este mismo que implementaremos toda configuración del componente de autenticación, así mismo vamos a ir creando las acciones login, home y logout que nos va permitir manejar todas las tareas que forman parte de la autenticación de usuarios. Espero que esta nueva lección te guste mucho y así también conozcas uno mas de los beneficios que nos traer aprender un framework como CakePHP 3.

Sin más te dejo con el nuevo video donde te hablo de todo lo mencionado anteriormente y otras características más puestas a la práctica:

Notas adicionales:

– Conoce más del componente de autenticación en la documentación oficial:

http://book.cakephp.org/3.0/en/controllers/components/authentication.html

– La estructura y estilos de la vista login lo obtuvimos gracias a un snippet compartido por el usuario ninjamonk en la web de bootsnipp.com

http://bootsnipp.com/snippets/featured/mix-amp-match-login

No olvides que en la siguiente lección vamos a trabajar con la parte de autorización de usuarios, de esa manera ya contaremos con un sistema completo para gestionar los usuarios de nuestra aplicación. Por favor si te gustó y te fue útil esta lección compártelo en tus redes sociales para que mi trabajo llegue a mas personas, ya por último invitarte también a dejar tu comentario acá abajo así me cuentas como te fue a ti implementando el componente dentro de tu aplicación.

Sigue todas las lecciones del curso AQUÍ.

Saludos!!!

Repositorio oficial.

firma emm

11 respuestas a «Componente de autenticación de usuarios en CakePHP 3»

  1. Buenas, hola Edson, están buenos los tutoriales y gracias por ello.
    Si es posible pedirte ayuda, tengo un error, al presionar el boton «Acceder» en el login, me aparece el error:
    SQLSTATE[42S02]: Base table or view not found: 1146 Table ‘pocake.users’ doesn’t exist

    Please try correcting the issue for the following table aliases:
    Users

    Lo único que cambie fue el nombre de la tabla Users a Usuarios, hasta el video 8, listaba usuarios y los creaba, pero al llegar aquí…ya repetí el vídeo y me vuelve a generar el error, pego la funcion login() de la clase UsuariosControler.php:

    public function login()
    {
    if($this->request->is(‘post’)) {
    $usuario = $this->Auth->identify();
    if($usuario) {
    $usuario = $this->Auth->setUser($usuario);
    return $this->redirect($this->Auth->redirectUrl());
    }
    else {
    $this->Flash->error(‘Datos son inválidos, por favor intente nuevamente’, [‘key’ => ‘auth’]);
    }
    }
    }

    Muchas gracias !!

    1. Es posible cambiar tu tabla pero hay que tener cuidado en cambiar el nombre en unos cuantos lugares de tu aplicación. Para no extenderme tanto te aconsejo que definas tus tablas en ingles y así vas a la par de las convenciones del framework y te ahorras también en aspirinas. Saludos.

        1. No te dije exactamente eso, puedes utilizar tus tablas en español pero yo solo te dí el consejo de que lo manejes en ingles ya que así podrás manejar ciertos componentes como el de autenticación sin que se convierta en un dolor de cabeza ya que por defecto este componente trabaja con una tabla ‘users’ .

          1. Recibo el consejo y adoptare el ingles :) …. ya solucione mi error, para efectos de pruebas, cambie la tabla a ingles Users, y ahora, generaba un error «Authentication adapter «finder» was not found. «, pero, elimine la linea ‘finder’ => ‘auth’ de AppController.php y funciono !!!! no entiendo muy bien, es como si faltara importar la librería o si no existiera finder…. ahora intento es hacer que halla una pagina de inicio un home público ya que al cargar la página va siempre a login…

  2. Edson amigo , ya he solucionado mis problemas anteriores , no se por que siempre me suceden errores trato de ser lo mas cuidadoso posible y trato siempre de hacer las cosas tal cual usted las hace, ahora se me presento un incoveniente el cual es el siguiente ahora no puede acceder a otra ruta que sea la de login, es decir, si coloco users/add o users/index igual me direcciona es users/login y la otra cosa asi ponga el usuario que ponga igual me dice que es incorrecto

    1. Hola Jorge, lo que me comentas puede suceder por varios factores, no te desanimes tienes el video a tu disposición de manera libre y lo puedes ver las veces que quieras, trata de seguirlo con mas detalle, quizá solo son pequeños detalles que se te escapan. Saludos.

  3. Hola Edson, tengo una duda ya que no encuentro que puede pasar, mira hago tal cual tu tutorial, salvo que los campos míos se llaman ‘username’ => ‘rut_users’,
    ‘password’ => ‘clave_users’

    y lo demás tengo todo igual a tu código cuando hago la prueba siempre me aparece el mensaje «datos son invalidos», no e que podra ser

    1. Puede ser por varias razones, puedes revisar si las contraseñas están correctamente encriptadas , también revisar bien la configuración del componente (tienes a tu disposición el código de todo el proyecto). Saludos.

  4. Saludos a mi me pasaba lo mismo que el comentario anterior. Tengo los usuarios guardados dentro de una tabla llamada usuarios y a pesar de asignad el userModel y fields, no lograba autenticar. Mi solucion aunque no muy optima fue crear una vista en la base de datos llamada users (no podia modificar el nombre de la tabla debido a regulaciones en la empresa) con alias en los campos username y password para ajustarme a las convenciones y asi resolvi el problema

    fue necesario crear un modelo de la vista users pero con el bake toma solo 10 seg.

    Espero a alguien le sea de utilidad aunque no es la mejor solucion a mi me funciono.

  5. se pueden usar diferentes formas de autentificación para cada prefix? ejemplo, cada prefix tiene su propio appcontrooller y quería saber si uno se puede ocupar el nombre y el pass, en otro un pin y serial

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *