Autentificarea face parte din aproape toate aplicațiile web cu care lucrați. Este foarte plictisitor să continuați să repetați tot codul de boilerplate în fiecare proiect. Ei bine, vestea bună este că Laravel 5 îți revine la această plictiseală oferind o fațadă de autentificare gata de utilizat.
Tot ce trebuie să faceți este să configurați și să personalizați furnizorul de servicii de autentificare în funcție de necesitățile proiectului. În acest sfat rapid, vă voi arăta exact cum să faceți asta.
Dacă doriți o soluție gata, încercată și testată, încercați Vanguard - Advanced PHP Login and User Management pe Envato Market. Este o aplicație PHP, scrisă în Laravel 5.2, care permite proprietarilor de site-uri să adauge rapid și să permită autentificarea, autorizarea și gestionarea utilizatorilor pe site-ul lor.
Vanguard - Avansat PHP de conectare și de gestionare a utilizatorilor pe Envato MarketVoi presupune că începeți cu o instalație nouă Laravel 5, dar puteți trece peste oricare dintre acești pași, dacă le-ați făcut deja. În primul rând, veți stabili unele variabile de mediu în .env
fișier la baza proiectului dvs. Practic, acestea au legătură cu configurarea bazei de date.
APP_ENV = APP_DEBUG locală = true APP_KEY = 8wfDvMTvfXWHuYE483uXF11fvX8Qi8gC db_host = localhost DB_DATABASE = laravel_5_authentication DB_USERNAME = rădăcină PAROLĂ_BD = CACHE_DRIVER root = fișier SESSION_DRIVER = fișier
Observați APP_ENV
, db_host
, DB_DATABASE
, DB_USERNAME
, și PAROLĂ_BD
variabile. APP_ENV
variabilă spune Laravel care mediu dorim să rulați aplicația noastră web. Restul de nume de variabile de bază de date sunt destul de evidente.
Acesta este tot ce trebuie să faceți pentru a configura conexiunea bazei de date. Dar cum folosește Laravel aceste variabile? Să examinăm config / database.php
fişier. Veți observa utilizarea env ()
funcţie. De exemplu, env ("DB_HOST", "localhost")
. Laravel 5 folosește această funcție pentru a capta variabile din $ _ENV
și $ _SERVER
tablouri globale, care sunt populate automat cu variabilele pe care le definiți în .env
fişier.
A executa php artisan migrează: instalați --env = local
în terminalul dvs. la baza proiectului dvs. pentru a instala migrațiile la nivel local. De asemenea, observați că există două migrații deja definite în Baza de date / migrări
pliant. Folosind aceste migrații, Laravel 5 creează o utilizatori
și a password_resets
tabel, permițând funcționarea plăcii de autentificare standard. Voi crea oa treia migrare pentru a modifica utilizatori
pentru a vă arăta cum să personalizați configurarea implicită de autentificare.
A executa php artisan face: migrare alter_users_table_remove_name_add_first_name_last_name
în terminal pentru a crea oa treia migrare.
dropColumn ( 'name'); $ table-> string ('first_name', 50) -> după ('id'); $ table-> șir ('last_name', 50) -> după ('first_name'); ); / ** * Reveniți la migrații. * * @Return void * funcția / publică în jos () :: Schema de masă (, funcția ($ tabel 'utilizatori') $ table-> dropColumn ( 'last_name'); $ table-> dropColumn ( 'first_name'); $ table-> șir ('nume') -> după ('id'););
După cum puteți vedea, ați eliminat câmpul de nume și ați adăugat încă două câmpuri Nume
și numele de familie
cu o lungime maximă de 50 de caractere. Ați adăugat, de asemenea, codul care reia aceste modificări în baza de date.
A executa php artizan migrează
în terminal. Dacă migrațiile au avut succes, ar trebui să puteți vedea atât tabelele din baza de date cu câmpurile pe care le-ați definit.
Veți configura serviciul Registrar pentru a adăuga noul dvs. definit utilizatori
tabele de câmp.
Editați fișierul app / Servicii / Registrar.php
.
'obligat' | min: 3 | max: 50 ',' last_name '=>' obligatoriu 'min: 3 | max: 50', 'email' => '=>' cerut | confirmat | min: 6 ',]); / ** * Creați o nouă instanță de utilizator după o înregistrare validă. * * @param matrice $ date * @return User * / public function create (array $ data) retur user :: create (['first_name' => $ data ['first_name'], 'last_name' 'last_name'], 'email' => $ data ['email'], 'parola' => bcrypt ($ data ['parola']),]);
validator
funcția validează datele transmise din formularul de înregistrare al utilizatorului. Ați eliminat setarea implicită Nume
câmp și a adăugat Nume
și numele de familie
câmpuri cu o lungime minimă de trei caractere și o lungime maximă de 50 de caractere pentru ambele. crea
funcția adaugă utilizatorul înregistrat la utilizatori
tabel în baza de date, deci trebuie doar să includeți Nume
și numele de familie
câmpuri.
De asemenea, va trebui să actualizați modelul de utilizator pentru a include Nume
și numele de familie
câmpuri.
Editați fișierul app / User.php
.
$ se poate umple
matrice specifică domeniile care sunt deschise la modificare. În general, nu ați include câmpuri care sunt generate automat în acest câmp sau câmpuri care nu necesită o intrare a utilizatorului ca hașul pentru un jeton de memorie. Tot ce ați făcut este actualizarea$ se poate umple
pentru a permiteNume
șinumele de familie
să fie atribuite în masă.Actualizarea Vizualizării
În cele din urmă, trebuie doar să actualizați vizualizările front-end pentru a include
Nume
șinumele de familie
câmpuri. În primul rând, veți actualiza formularul de înregistrare.Editați fișierul
Resurse / opinii / autorizare / register.blade.php
.@extends ('app') @section ('conținut')@endsectionInregistreaza-te@if (numără ($ erori)> 0)Hopa! Au existat unele probleme cu ajutorul dvs..@endif
@foreach ($ errors-> all () ca eroare $)
- $ error
@endforeachAți adăugat
Nume
șinumele de familie
câmpuri la formularul de înregistrare. De asemenea, trebuie să modificați aspectul implicit al aplicației laResurse / opinii / app.blade.php
pentru a afișa numele utilizatorului înregistrat în meniul de navigare.Laravel 5: Folosind fațada de autentificare @yield ( 'conținut')Asigurarea căilor dvs.
Pentru a vă asigura că rutele și pentru a le permite utilizatorilor conectați să le poată accesa, trebuie să folosiți mediul de administrare auth care este furnizat de Laravel. Mijloacele de middleware auth pot fi găsite la
app \ Http \ Middleware \ Authenticate.php
.Iată câteva exemple de utilizare a acesteia pentru a vă proteja rutele.
// închiderea rutei Route :: get ('', [' middleware '=>' auth ', funcția () // dacă utilizatorul nu este autentificat // el va fi redirecționat către pagina de autentificare // și acest cod nu va fi executat]); // actiune controler Route :: get (' ',' middleware '=>' auth ',' utilizează '=>' @ „]); // într-o clasă de controler YourController extinde Controller funcția publică __construct () $ this-> middleware (' „); $ This-> middleware (“ ', [' numai '=> [' „]]); $ This-> middleware (“ ', [' cu excepția '=> [' „]]); Modificarea rutelor de autentificare implicite
Puteți executa
php artisan route: list
în terminal pentru a verifica rutele implicite pe care le utilizează fațada de autentificare. Puteți accesa aceste rute pentru a vă testa codul de autentificare. Iată câteva exemple de moduri de modificare a acestor rute.Editați fișierul
app / HTTP / routes.php
.// Exemplu 1 // adresa URL de conectare http://www.example.com/account/login // url de logout http://www.example.com/account/logout // adresa URL de înregistrare http: //www.example. com / cont / registru Route :: controlere (['account' => 'Auth \ AuthController', 'password' => 'Auth \ PasswordController',]); // Exemplu 2 // adresa URL de conectare http://www.example.com/login // url de logout http://www.example.com/logout // url de înregistrare http://www.example.com/register Route :: controllere ([ "=> 'Auth \ AuthController', 'parola' => 'Auth \ PasswordController',]); // Exemplul 3 // redefiniți toate căile de rută :: obține ( 'exemplu / registru',„Auth \ AuthController @ getRegister '); Calea :: post (' exemplu / registru“, 'Auth \ AuthController @ postRegister'); Calea :: get ( 'exemplu / autentificare', 'Auth \ AuthController @ getLogin'); Route :: post ( 'exemplu / autentificare', 'Auth \ AuthController @ postLogin'); Calea :: get ( 'exemplu / logout', 'Auth \ AuthController @ getLogout'); Calea :: get ( 'exemplu / e-mail', „Auth \ PasswordController @ getEmail '); Route :: post (' exemplu / e-mail“, 'Auth \ PasswordController @ postEmail'); Route :: get ( 'exemplu / reset / cod', 'Auth \ PasswordController @ getReset') ; Traseu :: post ('exemplu / reset', 'Auth \ PasswordController @ postReset');De asemenea, nu uitați să apelați URI dinamic în vizualizările și șabloanele de e-mail utilizând ajutorul de la Laravel. Puteți vedea cum să faceți acest lucru în depozitul GitHub al acestui sfat rapid.
Gândurile finale
Caracteristica de resetare a parolei trimite linkul pentru resetarea parolei la e-mail-ul utilizatorului, deci asigurați-vă că aveți configurația de e-mail stabilită în proiectul dvs. Laravel. Șablonul de vizualizare pentru e-mailul pentru resetarea parolei se află la
Resurse / opinii / e-mailuri / password.blade.php
. De asemenea, puteți configura câteva alte opțiuni de bază înconfig / auth.php
fişier.Sper că ați găsit acest sfat rapid ușor de urmărit. Până la următoarea mea piesă Tuts +, codificare fericită!
Apropo, dacă aveți nevoie de ajutor suplimentar pentru remedierea erorilor sau pentru personalizarea la care nu vă simțiți confortabil, contactați unul dintre furnizorii de servicii PHP din Envato Studio. Acestea vă pot ajuta cu o gamă largă de probleme rapid și fiabil, astfel încât, cu o mică investiție de bani, puteți să vă salvați o mulțime de timp!
Furnizori de servicii PHP pe Envato Studio