|
|
(41 revisiones intermedias por el mismo usuario no mostrado) |
Línea 1: |
Línea 1: |
| {{:Usuario:ManuelRomero/micursos/Laravel/autentificacion/nav}} | | {{:Usuario:ManuelRomero/micursos/Laravel/autentificacion/nav}} |
| + | {{__TOC__}} |
| + | https://www.youtube.com/watch?v=BXXmboZRLYo |
| + | <div class=parrafo> |
| <!-- | | <!-- |
− | Como ver el tema de puertos
| + | {{MRM_actividad|Title=Para recordoar| |
− | nmap localhost
| + | ;Instalacion |
| + | composer require "laravel/breeze" |
| + | php artisan breeze:install |
| + | (tener instalado nodejs y npm) |
| + | npm install |
| + | npm run dev |
| + | *Las migraciones |
| + | Establecer los datos de conexión en el fichero .env |
| + | ejecutar las migracionesw |
| + | <source lang=bash> |
| + | php artisan migrate |
| + | </source> |
| + | ;Para usar |
| | | |
− | El resultado sera una lista con los puertos que tienes abiertos, los protocolos que utilizan y los servicios que están corriendo en este momento.
| + | *Para establecer routas protegidas (solo accesibles si logueado) |
| | | |
− | Para cerrar algún puerto solo es necesario ejecutar una linea como la siguiente en una terminal:
| + | Route::get("xx", function (){ |
| + | return view("xxxxxx");})->middelware("auth"); |
| | | |
− | fuser -k 80/tcp
| + | *Si en una vista quiero si estoy logueado |
− | -->
| + | |
− | | + | |
− | ===Conceptos generales===
| + | |
− | *La autentificación es otra de las muchas tareas comunes en cualquier aplicación que en el fondo no es parte de la aplicación sino un nivel de seguridad o compromiso que nuestra app pretende adoptar. | + | |
− | *Laravel gestiona la autentificación en varios ficheros según vamos a ver a continuación.
| + | |
− | *Laravel nos ofrece la autentificación como un servicio.
| + | |
− | *Laravel tiene preconfigurada la autentificación la cual la podemos activar de manera sencilla.
| + | |
− | ====Autentificación implementada en Laravel====
| + | |
− | ;Fichero de configuración
| + | |
− | config/auth.php
| + | |
− | | + | |
− | *Un listado de este fichero por defecto en la versión 5.2.32 (ver fichero en un proyecto para comentarios)
| + | |
− | {{Plegable|hide|config.php|
| + | |
| <source lang=php> | | <source lang=php> |
− | ?php
| + | @auth |
− | return array(
| + | <h2>Conectado como {{auth()->user()->name}}</h2> |
| + | <form action="{{route("logout")}}" method='post'> |
| + | @csrf |
| + | <x-button>Desconectar</x-button> |
| + | </form> |
| + | @endauth |
| + | @guest |
| + | <a href="{{route("login")}}"><x-button>Login</x-button></a> |
| + | <a href="{{route("register")}}"><x-button>Registrarme</x-button></a> |
| | | |
− | return [
| + | @endguest |
− | //Autentificaciones por defecto
| + | |
| | | |
− | 'defaults' => [
| |
− | 'guard' => 'web',
| |
− | 'passwords' => 'users',
| |
− | ],
| |
− |
| |
− | //Configuración de guards *cómo los usuario se autentifican en cada solicitud*
| |
− | 'guards' => [
| |
− | 'web' => [
| |
− | 'driver' => 'session',
| |
− | 'provider' => 'users',
| |
− | ],
| |
− |
| |
− | 'api' => [
| |
− | 'driver' => 'token',
| |
− | 'provider' => 'users',
| |
− | ],
| |
− | ],
| |
− | 7
| |
− | //Configuración de providers
| |
− | *como los usuario recuperar su almacenamiento permanente e.d donde está
| |
− | almacenadas las credenciales para verificar la autentificación*/
| |
− | 'providers' => [
| |
− | 'users' => [
| |
− | 'driver' => 'eloquent',
| |
− | 'model' => App\User::class,
| |
− | ],
| |
− |
| |
− | // 'users' => [
| |
− | // 'driver' => 'database',
| |
− | // 'table' => 'users',
| |
− | // ],
| |
− | ],
| |
− | //configuración para resetear la password
| |
− |
| |
− | 'passwords' => [
| |
− | 'users' => [
| |
− | 'provider' => 'users',
| |
− | 'email' => 'auth.emails.password',
| |
− | 'table' => 'password_resets',
| |
− | 'expire' => 60,
| |
− | ],
| |
− | ],
| |
− |
| |
− | ];
| |
| </source> | | </source> |
− | }}
| + | *Recordar las rutas creadas |
− | La autentificación en Laravel está configurada por dos elementos que podemos modificar
| + | routes/auth.php |
− | ;Guards
| + | *Para verlas |
− | ;Providers
| + | php artisan route:list |
− | '''''Guards''''' definen cómo los usuarios son autentificados en cada solicitud. Por ejemplo sesiones o tokens
| + | *Controladores creados |
− | '''''Providers''''' Definen cómo se obtienen los datos almacenados de manera persistente en el sistema. (Base de datos, tabla, campos ...)
| + | http/controllers/auth |
| | | |
− | ====Activando la autentificación por defecto de laravel====
| + | ;Modificar la página a la que me redirige una vez logueado |
− | Usamos la línea de comandos con artisan y creamos el módulo auth en nuestra aplicación
| + | Const HOME en Providers/RouteServiceProviders |
− | <source lang=bash>
| + | |
− | {23:44}~ ➭ php artisan make:auth
| + | |
− | Authentication scaffolding generated successfully.
| + | |
− | {0:29}~ ➭
| + | |
− | </source>
| + | |
− | {{MRM_Pregunta|Title=Qué ha ocurrido|
| + | |
− | ;1.-Se han creado 1 controladores (app/Http/Controller/HomeController.php
| + | |
− | además disponemos de 4 controladores para gestionar los usuarios app/Http/Controller/Auth
| + | |
− | [[Imagen:controller_auth.png|400px|center]]
| + | |
− | ;2.-Se ha añadido las siguientes entradas en las rutas routes/web.app
| + | |
− | <source lang=php>
| + | |
− | //...
| + | |
− | Auth::routes();
| + | |
− | Route::get('/home', 'HomeController@index');
| + | |
− | //...
| + | |
− | </source>
| + | |
− | ;3.-Se han creado las siguientes vistas /resources/view/
| + | |
− | [[Imagen:laravel_auth2.png|400px|center]]
| + | |
− | }}
| + | |
| | | |
− | ;Página inicial
| |
− | {{MRM_Punto clave|Página a rederigir una vez logueado|
| |
| | | |
− | ;Atributo
| + | }}--> |
− | <source lang=php>
| + | |
− | protected redirectTo='/home';
| + | |
− | </source>
| + | |
− | De los controladores:
| + | |
− | ;LoginController.php
| + | |
− | ;RegisterController.php
| + | |
− | ;ResetPasswordController.php
| + | |
− | Se puede especificar también el método
| + | |
− | <source lang=php>
| + | |
− | protected function redirectTo()
| + | |
− | {
| + | |
− | return '/path';
| + | |
− | } | + | |
− | </source>
| + | |
− | {{Tip|El método tiene preferencia sobre el atributo}}
| + | |
− | }}
| + | |
− | *Una vez autentificado el sistema nos lleva a una página
| + | |
− | *Esto se especifica en
| + | |
| | | |
| | | |
Línea 131: |
Línea 58: |
| | | |
| | | |
| + | ===Conceptos generales=== |
| + | *La autentificación es otra de las muchas tareas comunes en cualquier aplicación que en el fondo no es parte de la aplicación sino un nivel de seguridad o compromiso que nuestra app pretende adoptar. |
| + | *Laravel gestiona la autentificación en varios ficheros según vamos a ver a continuación. |
| + | *Laravel nos ofrece la autentificación como un servicio. |
| + | *Laravel tiene preconfigurada la autentificación la cual la podemos activar de manera sencilla. |
| + | *Sistemas de authentificación posibles con laravel: |
| + | #Autentificación básica con http |
| + | #Breeze |
| + | #Fortity |
| + | #Jetstream |
| + | #Sanctum |
| + | #Passport |
| + | <!-- |
| + | ====Autentificación básica con http==== |
| | | |
| | | |
| | | |
− | | + | ====Autentificación implementada en Laravel: Breeze==== |
− | | + | *Este paquete aporta los siguientes elementos: |
− | *La idea es usar un milddeware, entendido como un software intermedio entre la página que solicito y la que el servidor me entrega
| + | ;En el backend: |
− | *De esta forma siempre que solicite una página que necesite estar registrado, antes de servirla voy a verificar si estoy o no registrado
| + | Vistas |
− | *Anteriormente (en veriones 4 o anterior), este concepto se conocía como filtro, ahora en esta versión se conoce como ya hemos comentado como '''''Middleware'''''.
| + | Rutas y controladores |
− | *La idea es antes de cargar una página que se verifica ver si el usuario está autentificado
| + | ;En el frontend |
− | *La descripción algorítmica sería
| + | Tailwindcss/blade |
− | 1.- Si está registrado entrego la página solicitada | + | ;Acciones implementadas: |
− | 2.- Si no lo está le redirijo a una página de logueo para que se acredite o registre | + | Registro |
− | 2.-1 Cuando lo haga le doy paso a la página solicitada | + | Login |
− | 3.- En caso de no autentificarse le doy una información de error. | + | Logout |
− | *En Laravel todo está preparado y configurado, para que con unas pequeñas acciones podamos adaptar esa configuración a nuestras necesidades. Bastaría con hacer las siguientes acciones como indican en la página de referencia
| + | Resestablecimiento de contraseña |
− | <source lang=bash>
| + | Confirmación por email |
− | php artisan make:auth and | + | |
− | php artisan migrate
| + | </div> |
− | </source> | + | --> |
− | Entonces acceemos a nuestra app
| + | |
− | http://localhost:8000/register
| + | |
− | | + | |
− | ===Gestionar los datos de la autentificacion===
| + | |
− | *Por defecto tenemos un modelo llamado '''''User''''' con su tabla por defecto '''''users'''''
| + | |
− | *Esa tabla logicamente hay que construirla. Podemos hacerlo con migraciones.
| + | |
− | Entre otros campos debe contener
| + | |
− | *campo remenber_token de 100 caracteres, permitiendo el valor nulo. Campo usado para recordar entre sesiones
| + | |
− | *Para incluir este campo con migraciones usaremos
| + | |
− | <source lang=php>
| + | |
− | $table->rememberToken()
| + | |
− | </source>
| + | |
− | *Para gestionar la validación Laravel incluye el modelo '''''app/User.php'''''
| + | |
− | | + | |
− | ===Gestión de contraseñas===
| + | |
− | ;make crear una contraseña
| + | |
− | Hash::make('secret');
| + | |
− | ;check validar una contraseña
| + | |
− | Hash::check('secret',$hashedPassword);
| + | |
− | ;Tengo que volver a hacer el hash de una contraseña
| + | |
− | if (Hash::needsRehash($hashed))
| + | |
− | {
| + | |
− | $hashed = Hash::make('secret');
| + | |
− | }
| + | |