2016-02-13 19 views
6

Questo è il mio primo tentativo in un pacchetto laravel e ho riscontrato un problema in cui Auth :: attempt ($ credentials) funziona all'interno del mio controller di login, ma al reindirizzamento su una rotta o un controller protetti, l'utente non è più autenticato. Di seguito è riportato il mio metodo di login controller con il reindirizzamento alla dashboard commentato.Autenticazione utente non persistente nel pacchetto Laravel

Una risposta a credenziali valide stampa il record utente corretto e Auth :: check restituisce true. Ma, quando viene reindirizzato al controller admin, l'utente non è autenticato. Di seguito è riportato il metodo del controller di amministrazione che deve generare l'utente autenticato, ma restituisce solo "non registrato".

public function index() 
{ 
    if(Auth::check()) print_r(Auth::user()); 
    else echo "not logged"; 
} 

Entrambi i controllori usano autenticazione ;, loro namespace sono coerenti con il fornitore/pacchetto/pathToDir, db è installato correttamente, e la chiave di crittografia è stato impostato. Qualche idea su cosa sta andando male? Grazie

risposta

14

Risulta il problema era con il nuovo middleware web, si è trasferito tutti i miei percorsi che richiedono i dati della sessione per il gruppo di percorso e tutto funziona normalmente.

Route::group(['middleware' => ['web']], function() { 

    Route::get("/login", ['uses'=>'[email protected]']); 
    Route::post("/login", ['uses'=>'[email protected]']); 
    Route::get("/logout", ['uses'=>'[email protected]']); 

    Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function() { 
     Route::get('/', ['uses'=>'[email protected]']); 
    }); 
}); 
+1

Mi hai salvato la giornata! Risulta che, per le rotte predefinite all'interno di 'routes/web.php', Laravel applica un intero gruppo di middleware chiamato" web ". E non applica questo gruppo a percorsi di pacchetti esterni caricati tramite il metodo del fornitore di servizi '$ this-> loadRoutesFrom (__ DIR __. '/ Routes.php');' –

0

Il comportamento predefinito del tentativo di metodo è quello di non mantenere l'utente registrato.

Si dovrebbe cambiare per:

if (Auth::attempt(array('email' => $email, 'password' => $password), false, true)) 

In questo modo potrete impostare remember come falso e login come vero.

Controlla il resto su questo qui: https://laravel.com/docs/5.2/authentication