Usuario:ManuelRomero/Laravel/autentificacion/introduccion

De WikiEducator
Saltar a: navegación, buscar



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
  • Larave nos ofrece la autentificación como un servicio
  • La idea es usar un milddeware, entendido como un software intermedio entre la página que solicito y la que el servidor me entrega
  • De esta forma siempre que solicite una página que necesite estar registrado, antes de servirla voy a verificar si estoy o no registrado
  • 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.
  • La idea es antes de cargar una página que se verifica ver si el usuario está autentificado
  • La descripción algorítmica sería
1.- Si  está registrado  entrego la página solicitada
2.- Si no lo está le redirijo a una página de logueo para que se acredite o registre
2.-1 Cuando lo haga le doy paso a la página solicitada
3.- En caso de no autentificarse le doy una información de error.
  • 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

Idioma no válido.

Necesita especificar un idioma como esto: <source lang="html4strict">...</source>

lenguajes soportados para sintaxis remarcada:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic


 php artisan make:auth and 
php artisan migrate

Entonces acceemos a nuestra app http://localhost:8000/register


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)
?php
return array(
 
return [
 //Autentificaciones por defecto
 
    'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],
 
//Configuración de guards *como los usuario se autentifican en cada solicitud*
    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
 
        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
    ],
 
//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,
        ],
    ],
 
];

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
$table->rememberToken()
  • 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');

}