Я, я только начал с Laravel, но у меня все еще есть проблема с моей аутентификацией. Мне нужно создать свою систему на существующей структуре базы данных. Пароль пользовательской таблицы использует md5, и мне нравится преобразовывать это в Laravel Hash. Но после преобразования пароля md5 в hash логин завершился неудачей с этим новым хэшем. Я не могу найти решение этой проблемы.Ошибка аутентификации Laravel
Таблица
- идентификатор (int11)
- gebruikersnaam (VARCHAR 255)
- спам-роботов (VARCHAR 255)
- updated_at (метка времени)
- created_at (метка времени)
- remember_token (временная метка)
модель пользователя
use Illuminate\Auth\UserTrait;
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableTrait;
use Illuminate\Auth\Reminders\RemindableInterface;
class User extends Eloquent implements UserInterface, RemindableInterface {
use UserTrait, RemindableTrait;
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'gebruikers';
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = array('wachtwoord');
}
Войти контроллер
class LoginController extends BaseController {
function starten(){
$rules = array(
'gebruikersnaam' => 'required', // make sure the email is an actual email
'wachtwoord' => 'required' // password can only be alphanumeric and has to be greater than 3 characters
);
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails()) {
return Redirect::to('/')
->withErrors($validator)
->withInput(Input::except('password'));
} else {
$user = User::where('gebruikersnaam','=',Input::get('gebruikersnaam'))
->first();
if(isset($user)) {
if($user->wachtwoord == md5(Input::get('wachtwoord'))) {
$user->wachtwoord = Hash::make(Input::get('wachtwoord'));
$user->save();
}
}
$userdata = array(
'gebruikersnaam' => Input::get('gebruikersnaam'),
'wachtwoord' => Input::get('wachtwoord')
);
if (Auth::attempt($userdata)) {
return Redirect::to('users/dashboard')
->with('message', 'You are now logged in!');
} else {
return Redirect::to('/')
->with('message', 'Deze combinatie van gebruikersnaam en wachtwoord lijkt helaas niet te kloppen')
->withInput();
}
}
}
}
Auth
return array(
'driver' => 'eloquent',
'model' => 'User',
'table' => 'gebruikers',
'reminder' => array(
'email' => 'emails.auth.reminder',
'table' => 'password_reminders',
'expire' => 60,
),
'username' => 'gebruikersnaam',
'password' => 'wachtwoord',
);
Примечание: Вход :: получить ('спам-роботов') и Вход :: get ('gebruikersnaam') заполняется корректно по почте в контроллере. Md5 правильно изменен на хэши Laravel в моем db, поэтому я не могу найти проблему, с которой я имею дело.
Примечание2: "gebruikersnaam" голландское имя пользователя и "спам-роботов" является голландца пароль
Примечание 3: Я использую Laravel 4
** EDIT **
Выход $ пользователя
["attributes": protected] => array (16) {["id"] => int (8681) ["gebruikersnaam"] => string (22) "---" ["wachtwoord"] => строка (60) "$ 2y $ 10 $ i3bemDK9NzNf/E0jmliv/eBPrqhq/3s3WGPTX3h6WNCMlXcS5W51i" ["email"] = > string (22) "---" ["voornaam"] => string (5) "Jelle" ["tussenvoegsel"] => NULL ["achternaam"] => string (4) "Pals" ["school_id" ] => int (110) ["telefoonnummer"] => string (10) "0655684308" ["geslacht"] => string (3) "man" ["geboortedatum"] => string (19) "1990-03 -22 09:00:00 "[" groep_id "] => int (8811) [" status "] => string (1)" 1 "[" updated_at "] => string (19)" 2014-06-25 14:53:43 "[" created_at "] => string (19)" 0000-00-00 00:00:00 "[" remember_token "] => string (0)" "}
** Найдено странно 000000 в updated_at **
Я внимательно изучил этот код, но я не мог найти недостатков. Не могли бы вы создать нового пользователя и опубликовать хеш-пароль, который будет в базе данных после его хэширования? – thpl
Спасибо, что комментировали. Ive hashed 'test' -> '$ 2y $ 10 $ bFqhL0J33g11iWQ9wa5Xv.AjhdaNp1nbTDsrvg9MRs6svTxVDZfo.' – JelleP
Хорошо, хэш имеет длину 60 символов, как и должно быть. Это кажется довольно странным. После сохранения модели попробуйте сбросить ее, содержит ли объект свойство пароля? – thpl