Laravel 4 Auth::Versuch() immer false zurück
Ich versuche die Laravel, die Auth-Klasse, aber immer wenn ich versuche zu einloggen in ein Benutzer, gibt die Methode false zurück. Hier ist mein code:
Routes.php
Route::get('new-user', function() {
return View::make('register');
});
Route::post('new-user', function() {
$name = Input::get('name');
$email = Input::get('email');
$password = Hash::make(Input::get('password'));
$user = new User;
$user->name = $name;
$user->email = $email;
$user->password = $password;
$user->save();
});
Route::get('login', function() {
return View::make('login');
});
Route::post('login', function() {
$user = array(
'email' => Input::get('email'),
'password' => Hash::make(Input::get('password'))
);
if (Auth::attempt($user)) {
//return Redirect::intended('dashboard');
return "ok.";
} else {
return "Wrong.";
}
});
views/login.blade.php
{{ Form::open(array('url' => 'login', 'method' => 'post')) }}
<h1>Login:</h1>
<p>
{{ Form::label('email', 'Email: ') }}
{{ Form::text('email') }}<br />
{{ Form::label('password', 'Password: ') }}
{{ Form::password('password') }}<br />
</p>
<p>
{{ Form::submit('Login') }}
</p>
{{ Form::close() }}
config/auth.php
return array(
'driver' => 'eloquent',
'model' => 'User',
'table' => 'users',
'reminder' => array(
'email' => 'emails.auth.reminder', 'table' => 'password_reminders',
),
);
Die Datenbank hat die E-Mail - & Felder Kennwort und das Passwort-Feld ist varchar(60).
Immer wenn ich senden Sie die Anmeldung info /Anmeldung es gibt mir "Falsch".
Ich kann wirklich nicht sehen was läuft hier falsch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihren code nervt, weil Sie auf der Durchreise sind die falschen Variablen 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:Hoffe, das hilft.
Außerdem gebe ich Euch die snippets an zusätzlichem code zu verbessern Sie Ihren work-flow. Route zum speichern neuer Benutzer:
Dann in Ihrem Benutzer-Modell fügen Sie die Methode
Diese Weise das Passwort wird automatisch ein Hashwert jedes mal, wenn es
Nicht hashwerts für das Kennwort vor dem Versuch:
Route::post('new-user', function() { $name = Input::get('name'); $email = Input::get('email'); $password = Hash::make(Input::get('password')); $user = new User; $user->name = $name; $user->email = $email; $user->password = $password; $user->save(); });
sorry i dont' wissen, wie man den code richtig hier.funktioniert dies nicht, da auth::Versuch konvertiert Passwort-hash mit bcrypt, und sieht für diesen hash in der Benutzer-Tabelle übereinstimmen.
kurz gesagt sollte das Passwort ein hash gespeichert in der Datenbanktabelle auth::versuchen zu arbeiten.
deshalb ist deine wenn () - Bedingung scheitern.
können Sie bcrypt(Passwort) zum speichern Passwort als hash in der Datenbank und verwenden Sie dann auth::Versuch
unten ist von laravel docs
https://laravel.com/docs/5.2/authentication#authenticating-users
Sollten Sie implementieren
UserInterface
Klasse von laravel innerhalb Ihrer model-Klasse:Und denken Sie daran, dass es 2 abstrakte Methoden, sollten Sie erklären in Ihrem Modell. Sie können Folgen original
User.php
ModellÜberprüfen Sie Ihre Passwort-Länge. Es müssen 60 oder höher in der Datenbank.