У меня возникли проблемы с пониманием реализации Sentry 2 для входа в систему. Я имею в виду, что в Sentry это было довольно прямолинейно. Укажите имя пользователя / адрес электронной почты и пароль от метода ввода до Sentry::login()
, однако они изменили его сейчас, и это действительно сбивает с толку.
Во-первых, они удалили столбец имени пользователя, что не имеет смысла.
Во-вторых, метод входа в систему теперь принимает объект пользователя, который вам нужно получить, используя идентификатор пользователя, что опять же не имеет смысла, поскольку вы не знаете идентификатор пользователя, если вы не сделаете другой запрос, поэтому они действительно все усложнили.
Мой код:
public function login()
{
// Deny access to already logged-in user
if(!Sentry::check())
{
$rules = array(
'username' => 'required|unique:users',
'password' => 'required' );
$validator = Validator::make(Input::all(), $rules);
if($validator->fails())
{
Session::flash('error', $validator->errors());
return Redirect::to('/');
}
$fetch = User::where('username', '=', trim(Input::get('username')));
$user = Sentry::getUserProvider()->findById($fetch->id);
if(!Sentry::login($user, false))
{
Session::flash('error', 'Wrong Username or Password !');
}
return Redirect::to('/');
}
return Redirect::to('/');
}
Я пытался использовать этот подход, но он выдает исключение: этот идентификатор неизвестен, несмотря на то, что идентификатор является частью таблицы, а модель пользователя представляет собой не что иное, как объявление класса с $table = 'users'; атрибут.
Что я здесь делаю не так или не понимаю.