Laravel 5.1 — аутентификация имени пользователя, пароля и подтверждения (1)

Выдернуть мои волосы за то, что кажется простой задачей. Я использую username вместо email в моем AuthController используя следующий код:

/**
* Set the login system to use username instead of email address
* @var string
*/
protected $username = 'username';

Это работало хорошо в течение долгого времени (когда я не планировал пользователей активировать свои учетные записи). Однако теперь мне нужно, чтобы пользователи активировали свои учетные записи, и я знаю, что мне нужно сделать дополнительные проверки при входе в систему, прежде чем они смогут увидеть свою панель управления.

Я изменил postLogin() Метод ниже, к тому, что я думал, будет правильным:

public function postLogin(Request $request)
{
$this->validate($request, [
'username' => 'required', 'password' => 'required',
]);

$credentials = $request->only('username', 'password');
$credentials = array_add($credentials, 'confirmed', '1');

if ($this->auth->attempt($credentials, $request->has('remember')))
{
return redirect()->intended($this->redirectPath());
}

return redirect($this->loginPath())
->withInput($request->only('username', 'remember'))
->withErrors([
'username' => $this->getFailedLoginMessage(),
]);
}

Но все, что я получаю, это следующая ошибка:

Undefined property: App\Http\Controllers\Auth\AuthController::$auth

Что я делаю не так?

Энди

3

Решение

Только один глюк, который я вижу там.

if ($this->auth->attempt($credentials, $request->has('remember')))

должно быть

if (Auth::attempt($credentials, $request->has('remember')))

4

Другие решения

В Laravel 5.1 атрибут $ auth не существует в конструкторе класса AuthController, как объяснено в 5.1 руководство по обновлению. Итак, вы ссылаетесь на свойство, которое не существует.

0

По вопросам рекламы [email protected]