Laravel 4 Auth:Versuch nicht funktioniert
Ich habe harte Zeit der Arbeit mit Laravel 4 Auth::Versuch-Methode , gefolgt, die richtige Dokumentation, Lesen paar SO threads aber ich bin noch nicht in der Lage, um es arbeiten.
$userData = array('email' => '[email protected]','password' => 'admin');
if(Auth::attempt($userData)){
//redirect
}
else{
echo 'Invalid';
}
Und es gibt Ungültiger jedesmal, wenn
Nun bin ich nicht sicher, was ist der eigentliche Grund.
In meinem config/auth.php ich habe folgende
<?php
return array(
/*
|--------------------------------------------------------------------------
| Default Authentication Driver
|--------------------------------------------------------------------------
|
| This option controls the authentication driver that will be utilized.
| This drivers manages the retrieval and authentication of the users
| attempting to get access to protected areas of your application.
|
| Supported: "database", "eloquent"
|
*/
'driver' => 'eloquent',
/*
|--------------------------------------------------------------------------
| Authentication Model
|--------------------------------------------------------------------------
|
| When using the "Eloquent" authentication driver, we need to know which
| Eloquent model should be used to retrieve your users. Of course, it
| is often just the "User" model but you may use whatever you like.
|
*/
'model' => 'User',
/*
|--------------------------------------------------------------------------
| Authentication Table
|--------------------------------------------------------------------------
|
| When using the "Database" authentication driver, we need to know which
| table should be used to retrieve your users. We have chosen a basic
| default value but you may easily change it to any table you like.
|
*/
'table' => 'users',
/*
|--------------------------------------------------------------------------
| Password Reminder Settings
|--------------------------------------------------------------------------
|
| Here you may set the settings for password reminders, including a view
| that should be used as your password reminder e-mail. You will also
| be able to set the name of the table that holds the reset tokens.
|
*/
'reminder' => array(
'email' => 'emails.auth.reminder', 'table' => 'password_reminders',
),
);
?>
- Ich habe Euch gesagt, die Antwort auf Ihre Frage, downvote alles, was Sie wollen. Der array-Schlüssel sind falsch, yoyur login halten scheitern. Spaß haben.
- Sie sollten sich keine sorgen über die unten abstimmen, dnt u denke, wenn Sie versucht haben mehrere Kombinationen, auch per E-Mail oder Benutzername ist nicht erforderlich option atleast in laravel4, laravel.com/docs/security. Lesen Sie dieses Dokument zu erhalten, besser zu verstehen....
- Ich denke, du meintest einen link zu Laravel 4 in der Dokumentation. ich bin in einem ähnlichen Problem gerade jetzt. Ich werde versuchen, hier zu posten, sobald ich es herausgefunden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stellen Sie sicher, dass Ihre Passwort-Feld in der db hat Platz für 64 Zeichen.
varchar(64)
Den hash muss 64 Zeichen, und Sie werden nicht einen Fehler von laravel, wenn Ihre Hash-Passwort ist bei der insertion abgeschnitten (und daher nicht in der Lage, immer überprüfen Sie ein Kennwort positiv).
@eric-evans korrekt ist. Verwenden der Authentifizierung in laravel 4, Sie müssen die "user" - Modell verwendet, das \Beleuchten\Auth\UserInterface interface, und implementiert die Methoden
Konnte Sie zeigen code für Ihr Modell? Dies sind einige Dinge, die sollte in der User-Modell, um für Auth zu arbeiten.
Ich hatte einige Schwierigkeiten mit diesem als gut. Was mir aufgefallen ist, dass in meinem Benutzer-Modell, das ich hatte:
In der Datenbank hatte ich die Spalte deleted_at, aber es ist standardmäßig mit einem aus genullt timestamp - 0000-00-00 00:00:00. Dies führte dazu, dass der Datensatz nicht gefunden werden und das wiederum verursacht die Authentifizierung fehl.
Musste ich fix die migration auf die Spalte deleted_at richtig wie folgt erstellt:
Hier sind die docs auf weichem löschen: http://laravel.com/docs/eloquent#soft-deleting
Den Auth-Klasse erfordert eine Spalte mit dem Namen-id als Primärschlüssel in deiner Benutzer-Tabelle.
Beachten Sie, dass in der Tabelle User , das Passwort-Feld wird Hash, die Ursache der Auth::Versuch($credentials);
$Anmeldeinformationen->password bewerten das gehashte Passwort
Überprüfen tut Ihr Passwort ist gehasht. Es sollte nicht normal sein text.
Ihren code nervt, weil Sie auf der Durchreise sind, die falsche array-Tasten zu
Auth::attempt()
. Diese Methode erfordert ein array mit Schlüssel, Benutzername, Passwort und Optional zu erinnern. In diesem Licht, deine obige code sollte sein: