Revista Informática

Laravel 4 desde Cero: Sesiones II

Publicado el 07 febrero 2014 por Codehero @codeheroblog

Auth::check

Esta función estática de la clase Auth permite verificar si un usuario ha iniciado sesión. En caso de que un usuario este en la sesión entonces devolverá True, en caso contrario retornara False.

if (Auth::check()){ // usuario con sesión iniciada }else{ // no hay usuario }

12345 if(Auth::check()){  // usuario con sesión iniciada}else{  // no hay usuario }


Hash::check

Esta función estática de la clase Hash permite verificar una clave encriptada sin tener que hacer inicio de sesión. Si la clave es correcta se retornara True, en caso contrario False.

if (Hash::check('clave', $claveEncriptada)){ // clave correcta }else{ // clave incorrecta }

12345 if(Hash::check('clave',$claveEncriptada)){  // clave correcta}else{  // clave incorrecta}


Auth::attemp con Condición

En el pasado tutorial vimos el método attempt y que con el verificábamos el usuario y la clave de la persona que intentara ingresar. Ahora le podemos agregar una condición al arreglo en donde se encuentran el usuario y la clave. Laravel verifica que esta condición sea un campo en la base de datos y que su valor sea igual al valor que estamos pasando. Veamos un ejemplo para entenderlo mejor.

if (Auth::attempt(array('correo' => $correo, 'password' => $password, 'activo' => 1))){ // El usuario y su clave están correctos, pero también esta activo. }else{ // El usuario no pudo iniciar sesión. }

12345 if(Auth::attempt(array('correo'=>$correo,'password'=>$password,'activo'=>1))){  // El usuario y su clave están correctos, pero también esta activo. }else{  // El usuario no pudo iniciar sesión. }


Auth::loginUsingId

Esta función sirve para iniciar la sesión de algún usuario sin tener que validar contraseña y usuario. Se indica como parámetro el Id del usuario que se desea utilizar y Laravel crea su sesión.

Auth::loginUsingId(1);

1 Auth::loginUsingId(1);


Auth::once

Esta función sirve para que el usuario inicie sesión en una sola petición. Es decir ingreso su clave y su usuario, se ejecute el código que se debe ejecutar con la información del usuario y se descarta la sesión. Si se desea hacer otra petición con el mismo usuario entonces debe volver a introducir sus datos.

if (Auth::once( array('correo' => $correo, 'password' => $password ) )){ //Inicio sesión correctamente y valida por una sola petición }

123 if(Auth::once(array('correo'=>$correo,'password'=>$password)  )){  //Inicio sesión correctamente y valida por una sola petición }


Auth::validate

Laravel nos presenta una función que sirve solo para validar que un usuario exista y que su clave sea valida. Con esta función no se inicia ninguna sesión, solo se verifica que las credenciales que se introdujeron sean correctas.

if (Auth::validate(array('correo' => $correo, 'password' => $password ))){ // Los datos introducidos son validos }

123 if(Auth::validate(array('correo'=>$correo,'password'=>$password))){  // Los datos introducidos son validos}


Auth::logout

Ya hemos aprendido como iniciar sesión con las funciones que Laravel nos presenta, pero todavía no sabemos como salir de la sesión. Para esto existe la función estática logout, esta destruye la sesión y el usuario ya no podrá volver a entrar al menos que ingrese sus datos de nuevo.

Auth::logout();

1 Auth::logout();


Protección CSRF

Los ataques Cross-site request forgery (falsificación de petición en sitios cruzado) constan de enviar peticiones indebidas a sitios web en donde el usuario esta registrado, sin que él lo sepa. Laravel 4 nos ayuda a proteger nuestro sitio web contra estos ataques y para esto utiliza el filtro csrf.

Cuando creamos un formulario se debe colocar un campo de tipo hidden con un Token que sera validado luego por el filtro csrf de Laravel para ver si la petición esta viniendo de el lugar correcto.

Entonces lo primero que se debe hacer es crear el token en el formulario. Si estamos utilizando la función Form::open() para crear nuestro formulario entonces Laravel ya nos esta creado el campo con el Token automáticamente. En caso de que no utilicemos esta función para crear nuestros formularios entonces debemos crear el Token manual. Veamos un ejemplo de como se debe crear:

<!-- Este input debe ir dentro de el formulario que vayamos a enviar--> <!-- El nombre siempre debe ser _token --> <!-- El valor de debe llenar con la función csrf_token(); --> <input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">

12345 <!--Este input debe ir dentro de el formulario que vayamosaenviar--><!--El nombre siempre debe ser _token--><!--El valor de debe llenar con la funcióncsrf_token();--> <input type="hidden"name="_token"value="<?phpechocsrf_token();?>">

El segundo y ultimo paso de esta validación es colocar el filtro csrf en las rutas Post como un filtro before, para que Laravel verifique el Token antes de ejecutar cualquier operación.

Route::post('formulario', array('before' => 'csrf', function() { return 'El token es valido'; }));

1234 Route::post('formulario',array('before'=>'csrf',function(){  return'El token es valido';}));


Conclusión

Con este tutorial ya hemos revisado y aprendido las principales funciones que nos presenta Laravel para manejar sesiones de usuarios y poner seguridad a nuestra aplicación. Si seguimos las convenciones y utilizamos lo que Laravel nos brinda podemos observar que es muy fácil que hacer las cosas que necesitamos día a día en nuestros proyectos. Cualquier duda o comentarios estaré atento a la sección de comentarios.


Volver a la Portada de Logo Paperblog