2013-04-24 25 views
9

Ho un'app Laravel 4 nella quale ho impostato un utente. Nel mio percorso di accesso chiamo Auth::attempt con l'e-mail e la password ma viene sempre restituito come falso. Ho sicuramente la password corretta e l'hash corretto nel database come Hash::check restituisce true.Autenticazione Laravel 4 non funzionante

Penso che potrebbe essere dovuto all'utilizzo di email come campo di accesso anziché username, ma non riesco a vedere alcuna impostazione per quello. This question implicito è possibile aggiungere un'opzione a config/auth.php ma non ha funzionato. This question dice di usare username come chiave dell'array, ma poi ottengo l'errore SQL perché tenta di selezionare un campo username nel database.

Devo aggiungere qualcosa al modello Utente per specificare il campo del nome utente? Ecco il mio percorso di login:

Route::post('login', function() { 

    // data from login form 
    $credentials = array(
     'email' => Input::get('email'), 
     'password' => Input::get('password') 
    ); 

    $auth = Hash::check(Input::get('password'), Hash::make('mypass')); 
    var_dump($auth); // this is TRUE 

    // login was good 
    $auth = Auth::attempt($credentials); 
    var_dump($auth); // this is FALSE 
}); 
+2

La chiave di array deve corrispondere a una colonna utilizzata per autenticare gli utenti nel database. Questo è menzionato in [docs] (http://four.laravel.com/docs/security#authenticating-users). Hai cambiato il modello predefinito 'Utente' con cui L4 viene spedito? –

risposta

11

ho trovato il problema. Come suggerito da Jason nel commento sopra, avevo modificato il file models/User.php e rimosso alcune funzioni che non avevo realizzato erano necessarie.

I metodi getAuthIdentifier() e getAuthPassword() devono essere inclusi nel modello Utente per l'autenticazione!

+3

Che fanno. Il modello deve anche implementare 'UserInterface' e' RemindableInterface'. –

6

In app/config/app.php assicurarsi di avere il set di "chiave". Questo mi ha fatto tirare fuori i capelli. Tutto apparirà funzionante, la password sembra cancellata nel DB, ma restituirà sempre false fino a quando non avrai impostato questa chiave e re-hash la tua password nel DB.

"chiave php artigianale: generare"

+0

Grazie mille amico. Uso il Laravel 4 Generator di Jeffery Way e ho completamente dimenticato questo punto critico nell'installazione di Laravel prima di iniziare a codificare i miei percorsi e i miei controller. –

1

Ho avuto lo stesso problema e mi ha fatto sudare per ore. Verifica in modo definitivo il tuo modello User.php e assicurati di non averlo sovrascritto quello predefinito. Grazie Jason!

Problemi correlati