Este post lo público después de leer un comentario en el articulo que había escrito( Usar un form con AJAX en CakePHP 1.2)
Dicho comentario preguntaba como utilizar este componente, así que decidí dedicarle un post entero, para explicarlo de manera extensa y tratar de no dejar muchas dudas.
Titubee un poco en hacer esta publicación, ya que en el manual de cake viene bastante bien explicado desde mi punto de vista, pero como igual entiendo que a otras personas se les puede dificultar porque está en ingles o por la explicación que dan, me convencí de publicarlo.
Para empezar, deberíamos saber que es el “auth component”, que no es otra cosa sino un componente que nos será de mucha ayuda cuando queramos autenticar usuarios, pero este articulo sólo se limitará a indicar como usarlo para el simple “login”, y ninguna otra cosa, si alguien tiene alguna duda, puede preguntar y se la contestaremos con gusto o incluso podríamos dedicarle un post entero al tema, como ocurre con este.
Ahora sí, a hablar de como utilizar este componente, primero que nada, este ya viene incluido en cake, es decir no tenemos que descargar nada, pero si tendriamos que preguntarnos si vamos a trabajar con el archivo que trae (tuAplicacion\cake\libs\controller\components\auth.php) o si debemos copiarlo a nuestra carpeta (tuAplicacion\app\controllers\components\auth.php), yo recomiendo la última, ya que si echamos a perder el archivo tendremos un respaldo a la mano.
Una vez decidido esto, toca analizar la tabla y los campos que utilizaremos para la autenticación, por default, cake utilizará la tabla ‘users’, y los campos ‘username’ y ‘password(con cifrado de seguridad SHA1)’, OJO, todo esto puede ser modificado, pero en nuestro caso sólo cambiaremos el cifrado por un clásico MD5.
Primero crearemos nuestra tabla:
CREATE TABLE users ( id integer AUTO_INCREMENT, username char(50), password char(32), PRIMARY KEY (id) );
Una vez lista nuestra tabla, procederemos a crear nuestro controlador “users_controller.php” con el siguiente código:
<?php class UsersController extends AppController{ var $name='Users'; var $components=array('Auth'); function login(){ } function logout(){ $this->redirect($this->Auth->logout()); } } ?>
Así es, no necesitamos mas que esos 2 métodos, esto es porque en nuestro caso no necesitamos los métodos ‘index’, ‘add’, etc., más sin embargo, si tú las necesitas (que es lo más probable, puedes crear dichos métodos).
Una vez echo esto, creamos nuestro modelo ‘user.php’:
<?php class User extends AppModel{ } ?>
No necesitamos para este ejemplo poner nada dentro del mismo.
Hasta ahora ya tenemos nuestro controlador y modelo, ahora vamos por las vistas, aunque nada más necesitaremos la vista ‘login.ctp’:
<?php $session->flash('auth'); echo $form->create('User',array('action'=>'login')); echo $form->input('username'); echo $form->input('password'); echo $form->end('Ingresar'); ?>
Esto es todo lo necesario para trabajar con el ‘login’ de el “auth component”, bueno nos falta preparar nuestro componente para usar la autenticación que queremos y otros detalles:
Abrimos el archivo ‘auth.php’.
Primero, si deseamos usar otro modelo, buscamos la línea
var $userModel = 'User';
y cambiamos ‘User’ por el modelo deseado.
Para usar campos diferentes, cambiamos esta línea
var $fields = array('username' => 'username', 'password' => 'password');
es obvio pero cambiaremos los nombres de los campos por los deseados, por ejemplo:
var $fields = array('username' => 'email', 'password' => 'pass');
Si queremos indicar a donde nos va a redirigir el login, la línea
var $loginRedirect = 'controlador/index';
Por último, para cambiar el cifrado buscamos el siguiente método:
function password($password) { return Security::hash($password, 'md5', false); }
Para este ejemplo, usamos el cifrado md5, si quieres usar otro, basta con indicarlo de la misma manera.
Pues bien, el componente tiene otras opciones, pero en nuestro caso no nos ocupa, así que con esto finalizamos el post, espero les sirva, cualquier duda o comentario será bien recibido, saludos.

