PHPMAILER con Phalcon
PHPMAILER con Phalcon
¡INSCRÍBETE A CUALQUIER CURSO CON UN 50% DE DESCUENTO PARA NUEVOS CLIENTES!

Ya vimos cómo implementar JWT con codeigniter y con nodejs utilizando angularjs, en esta ocasión, vamos a ver cómo implementar JWT en Phalcon.

El que no conozca JWT (json web token) es un standard para la seguridad en peticiones http entre dos partes, en este caso las partes serán el servidor con Phalcon y el cliente con AngularJS.

Implementar JWT en phalcon es muy sencillo, simplemente debemos registrar la librería que nos proporciona JWT y consumir sus métodos de la misma forma que podemos hacer con cualquier otro framework php.

Si te interesa phalcon hay un curso disponible en el blog que te puede ayudar a conocerlo más a fondo.

Lo primero que debemos hacer es descargar las dependencias del proyecto, en este caso la librería JWT y la base de datos.

Crear el proyecto con Phalcon Devtools

Abre la terminal y escribe lo siguiente para crear lo que vamos a necesitar en el proyecto, incluido éste.


Con esto ya tenemos el proyecto, controladores y modelos, un paso importante viene ahora, dependiendo de la instalación y configuración de apache puedes tener problemas para recoger el header Authorization, para evitar este problema abre el .htaccess del directorio public y añade lo siguiente al principio.

Registrar JWT en Phalcon

Este proceso es muy sencillo, de todas formas vamos a cubrirlo, coge el archivo que has descargado, crea un directorio dentro de app llamado library y colócalo dentro.

Abre el archivo app/config/loader.php y haz la siguiente modificación.


Haz la configuración de tu base de datos, abre el controlador Auth y añade el siguiente código.


El método login simplemente comprueba si es una petición ajax, si es una petición post y si el usuario existe, si es así, crea un token utilizando la librería JWT y el método encode con los datos del usuario, finalmente retornamos la respuesta al cliente en formato json.

El proyecto en AngularJS

En lugar de hacer enorme el tutorial, dejo el código del proyecto con AngularJS utilizando JWT para que lo puedas descargar.

Descargar proyecto AngularJS + JWT

La ruta para ver el formulario de login con AngularJS teniendo el proyecto en una carpeta llamada angular en tu servidor es http://localhost/angular/angularjs_jwt/#/login, si la abres debes ver el formulario de login, los datos de acceso son los siguientes.

email: [email protected]

password: 123456

Si haces submit debes ver la siguiente página que consta de un json con la información del usuario y un botón para cargar películas.

Cargar las películas y autenticar al usuario con JWT

Si miras los datos almacenados en localstorage verás que hay un token que es el que nosotros hemos creado para el usuario logueado, y en cada petición lo vamos a enviar, en concreto en la petición para obtener las películas, así que vamos a interceptarlo con Phalcon, abre el controlador movies y añade el siguiente método.


Este código cómo ya hemos dicho simplemente comprueba si existe el header Authorization y si es un token válido obteniendo el payload a través del método decode de la librería JWT, si todo está bien, simplemente devuelve las películas y de nuevo el token, aquí simplemente te queda añadir un tiempo de expiración al token con la propiedad exp y hacer las comprobaciones en el cliente y en el servidor, pero esa batalla te la dejo a ti.

Espero que haya resultado lo más claro posible.