Laravel - Custome Auth Throttlelogins - PullRequest
0 голосов
/ 03 мая 2019

Я создал пользовательскую аутентификацию и все работает нормально.
Сейчас я пытаюсь добавить Throttlelogins, чтобы предотвратить несколько неправильных попыток входа в систему. Но ThrottleLogins, похоже, не загружается.

В: Чего мне здесь не хватает? или я что-то не так делаю?

Исключение:

Метод App \ Http \ Контроллеры \ Auth \ CustomersLoginController :: hasTooManyLoginAttempts не существует.

    <?php

    namespace App\Http\Controllers\Auth;

    use Illuminate\Http\Request;
    use App\Http\Controllers\Controller;
    use Illuminate\Foundation\Auth\AuthenticatesUsers;
    use Illuminate\Validation\ValidationException;
    use Illuminate\Foundation\Auth\ThrottlesLogins;

    use Auth;

    class CustomersLoginController extends Controller
    {    
        public function __construct()
        {
            $this->middleware('guest:customers');
        }

        public function ShowLoginForm()
        {
            return view('auth.customer-login');
        }

        public function login(Request $request)
        {
            $v = $request->validate([
                'email' => 'required|email',
                'password' => 'required',
            ]);

            if ($this->hasTooManyLoginAttempts($request)) {
                $this->fireLockoutEvent($request);

                return $this->sendLockoutResponse($request);
            }

            if(Auth::guard('customers')->attempt(['email'=>$request->email,'password'=>$request->password],$request->remember)){
                return redirect()->intended(route('customerdashboard'));
            };

            return $this->sendFailedLoginResponse($request);
        }

        protected function sendFailedLoginResponse(Request $request)
        {
            throw ValidationException::withMessages([
                $this->username() => [trans('auth.failed')],
            ]);
        }
        public function username()
        {
            return 'email';
        }


    }

Сообщение об ошибке Может кто-нибудь объяснить, о чем я пишу?

1 Ответ

1 голос
/ 03 мая 2019

Ошибка говорит о том, что вам не хватает функции: hasTooManyLoginAttempts

В функции входа в систему вы можете увидеть, что она пытается вызвать функцию, но ее нет в вашем классе. Вот где это идет не так.

обновление

В классе AuthenticateUsers, который вы пытались скопировать, он использует черту ThrottlesLogins, которая отсутствует в вашем контроллере.

Обновите свой контроллер так:

class CustomersLoginController extends Controller
{    

    use ThrottlesLogins;

Еще одно обновление

Вы пытались импортировать черту, которую Laravel использует в своем логине. Однако вот почему это не сработает:

Когда вы определяете класс, он может иметь доступ только к другим классам в своих пространствах имен. Например, ваш контроллер определен в следующем пространстве имен.

namespace App\Http\Controllers\Auth;

Таким образом, чтобы использовать другие классы, вам нужно импортировать их из их собственных пространств имен, чтобы вы могли получить к ним доступ. e.g.:

use Illuminate\Foundation\Auth\ThrottlesLogins;

Теперь, когда вы импортировали ThrottlesLogins, который на самом деле является признаком, теперь внутри класса вы используете его для показа всех методов внутри.

...