FatalThrowableError Вызов неопределенного метода App \ Exceptions \ Handler :: unauthenticated () laravel 5.4 - PullRequest
0 голосов
/ 15 октября 2018

У меня проблема с тем, что, когда мой пользователь не вошел в систему, и я иду на маршрут, который требует аутентификации для моего блога, он выдает исключение: "

Вызов неопределенного метода App\ Exceptions \ Handler :: unauthenticated ()

"Хотя у меня нет метода с именем unauthenticated() в каталоге

App \ Exceptions \ Handler.

Я хочу показать форму входа для моего пользователя, когда он / она нажимает на маршрут, который требует аутентификации, как это сделать?

Ответы [ 3 ]

0 голосов
/ 15 октября 2018

В вашем файле App \ Exceptions \ Handler добавьте функцию без проверки подлинности, Laravel распознает это и выполнит то, что вы здесь определили.

Вы можете добавить эту функцию:

public function unauthenticated($request, AuthenticationException $exception)
    {
        return ''; // use redirect('/login') or something if you want to redirect to login.
    }

Хотя, если вы используете php artisan make: auth, Laravel автоматически устанавливает страницу без аутентификации на страницу входа.Так что не знаю, использовали ли вы это, возможно, вы изменили что-то еще в стандартном коде Laravel.

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

0 голосов
/ 15 октября 2018

Это происходит потому, что в обработчике ошибок почему-то отсутствует функция без проверки подлинности.

Перейдите в файл App \ Exceptions \ Handler.php и добавьте следующую функцию.

<?php        
    protected function unauthenticated($request, AuthenticationException $exception)
    {
        if ($request->expectsJson()) {
            return response()->json(['error' => 'Unauthenticated.'], 401);
        }
        return redirect()->guest('login');
    }

измените guest('login') на желаемое место.

Вы можете использовать его в классе следующим образом:

Illuminate\Auth\AuthenticationException as AuthenticationException;
0 голосов
/ 15 октября 2018

Исключение не прошедшее проверку подлинности, выданное самой платформой.

Если у вас есть промежуточное программное обеспечение для аутентификации на маршруте, оно должно перенаправить вас на страницу входа Route::get('/test', 'TestController@show')->middleware('auth');

См. документы для получения дополнительной информации.

...