In questo articolo, darò un'occhiata alle nuove funzionalità di Laravel 5.2 e li descriverò uno per uno. Le nuove funzionalità sono elencate di seguito:
Questa funzione ti sarà utile, soprattutto quando devi disporre di Doctrine ORM Auth con più provider. Nei miei progetti preferisco che l'autenticazione tra admin e utente sia separata l'una dall'altra; questa funzione mi aiuterà a raggiungere questo facilmente. Vediamo un esempio config / auth.php
:
// ... 'guards' => ['user' => ['driver' => 'sessione', 'fornitore' => 'utenti',], 'admin' => ['driver' => 'sessione', 'provider' => 'admin',], 'api' => ['driver' => 'token', 'provider' => 'users',],], // ... 'providers' => ['users '=> [' driver '=>' doctrine ',' model '=> App \ Entities \ Users :: class,],' admin '=> [' driver '=>' doctrine ',' model '=> App \ Entities \ Admin :: class,],],
Ora, quando usi Auth :: tentativo ([...])
, Laravel chiamerà la guardia predefinita; quindi se vuoi usare una guardia specifica, chiama con il suo nome, ad esempio Auth :: guardia ( 'admin')
.
Per l'autenticazione nel tuo gruppo di percorsi con una guardia specifica, puoi semplicemente chiamare il nome della guardia:
Route :: group (['middleware' => ['auth: admin']], function () // ...
A volte, piuttosto che un semplice login nella tua app, desideri che gli utenti aggiungano un api_token
fino alla fine della stringa di query e utilizzarli per autenticare la loro richiesta. TokenGuard ti consentirà di ottenerlo facilmente.
Se si desidera utilizzare l'autenticazione del token, prima di tutto è necessario aggiungere un carattere unico di 60 caratteri api_token
campo nella tabella del database del modello selezionato (entità nella dottrina). Ora puoi usare facilmente api
guardia nella tua app.
Una delle nuove funzionalità di Laravel 5.2 che è molto pratica è il binding del modello di rotta. È possibile associare il modello al percorso; prima di questo lo creiamo manualmente:
Route :: get ('user / id', function ($ id) $ user = Users :: findOrFail ($ id); // ...);
Oppure puoi fare qualcosa come:
// ... $ router-> model ('user', 'App \ User'); // ... $ router-> get ('profilo / utente', funzione (App \ Utente $ utente) //);
Laravel 5.2 rende ancora più semplice. Basta passare un parametro nella chiusura del percorso e lo tratterà automaticamente come un binding del modello di percorso:
Route :: get ('user / id', funzione (App \ Utente $ utente // ...);
Ora è più facile associare il modello al percorso.
Per impostazione predefinita, Laravel utilizza la colonna id del modello. Ma se ti aspetti che cambi la mappatura, puoi cambiare il tuo modello in questo modo:
la classe User estende Model public function getRouteKeyName () return 'UserEmail';
Eloquente implementa il Illuminare \ Contratti \ Routing \ UrlRoutable
contratto, in modo da poter ignorare il getRouteKeyName ()
metodo. Definisce quale colonna deve essere utilizzata per cercarlo da un URL.
Come puoi vedere nella sezione precedente, abbiamo creato una protezione diversa per utente e amministratore. In questo caso, se vuoi assegnare più middleware a un gruppo di percorsi utente o al tuo gruppo di percorsi di amministrazione, Laravel 5.2 ti consente di creare un collegamento con un nome chiave.
Per definire il gruppo middleware, devi modificare kernel.php nella tua cartella http:
protected $ middlewareGroups = [// ... 'admin' => ['acl', 'web', 'auth',]];
E ora puoi facilmente utilizzarlo nel tuo gruppo di percorsi.
Se si utilizza l'API di un'altra applicazione come GitHub, per le richieste che utilizzano l'autenticazione di base o OAuth, è possibile effettuare fino a 5.000 richieste all'ora. Questa limitazione è chiamata limitazione della velocità. Se vuoi avere qualcosa di simile nella tua app, puoi usare la nuova funzionalità di Laravel 5.2. Laravel 5.2 ha aggiunto nuovo valvola a farfalla
middleware che gestirà la limitazione della velocità. Ad esempio, potresti avere qualcosa come:
Route :: group (['prefix' => 'api', 'middleware' => 'throttle'], function () Route :: get ('utente', funzione () return Users :: all (); ););
Di default, valvola a farfalla
il middleware consente 60 tentativi al minuto in kernel.php
:
// ... 'api' => ['throttle: 60,1', 'auth: api',],
Puoi cambiarlo come vuoi o persino personalizzarlo per un router specifico:
Route :: group (['prefix' => 'api', 'middleware' => 'throttle: 10,1000'], function () Route :: get ('user', function () return Users :: tutti(); ); );
Laravel 5.2 fornisce un modo veloce per impalcare tutto ciò che serve per l'autenticazione usando questo comando:
php artisan make: auth
L'utilizzo di questo comando nella nuova applicazione renderà le viste di registrazione e di accesso, nonché i percorsi per tutte le autenticazioni. Il mio file di percorso ha il seguente aspetto:
Route :: group (['middleware' => 'web'], function () Route :: auth (); Route :: get ('/ home', 'HomeController @ index'););
Il Percorso :: auth ()
metodo è una scorciatoia per definire i seguenti percorsi:
// Percorsi di autenticazione ... $ this-> get ('login', 'Auth \ AuthController @ showLoginForm'); $ this-> post ('login', 'Auth \ AuthController @ login'); $ this-> get ('logout', 'Auth \ AuthController @ logout'); // Percorsi registrazione ... $ this-> get ('register', 'Auth \ AuthController @ showRegistrationForm'); $ this-> post ('register', 'Auth \ AuthController @ register'); // Password Reset Routes ... $ this-> get ('password / reset / token?', 'Auth \ PasswordController @ showResetForm'); $ this-> post ('password / email', 'Auth \ PasswordController @ sendResetLinkEmail'); $ this-> post ('password / reset', 'Auth \ PasswordController @ reset');
UN HomeController
verrà generato anche, che è responsabile per le richieste di accesso al dashboard della tua applicazione. Ma puoi personalizzare o rimuovere questo controller in base alle esigenze della tua applicazione.
Una delle cose interessanti con cui ho lavorato sono i dati dei moduli array in HTML. Se si posiziona qualcosa all'interno delle parentesi quadre, la matrice risultante diventa associativa; altrimenti, sarà numerico:
Il PHP print_r ($ _ POST)
il risultato sarà:
array ('name' => array ('first' => "last '=>"))
Questo ti aiuterà a semplificare il processo di validazione e lavorare con i moduli. Ora vediamo la validazione per i nostri campi utente in Laravel 5.2:
public function Validator () $ this-> validate (Request :: all (), ['name. *. first' => 'required | string', 'name. *. last' => 'string',]) ;
Potresti aver notato che la forma della convalida è nome. *. scorsa
, con un asterisco nel mezzo, che indica quasi che è possibile aggiungere la chiave di un array o qualsiasi altra cosa di cui si possa aver bisogno.
Laravel 5.2 era una piccola versione che può farti lavorare meglio e più velocemente. Come potresti notare, molte di queste funzionalità sono anche facili da imparare.