Как изменить UnauthorizedHttpException errorHandler auth.basic в Laravel - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь сделать API с базовой аутентификацией в Laravel 5.5.48Когда авторизация успешна («имя пользователя» и «пароль»), ответ правильный, но если авторизация не удалась (неверные данные «имя пользователя» и «пароль»), отображается ошибка

То, что я не пробовал, но я не смог изменить Исключения отображаются в моем ответе (response () -> json (['status' => 'auth failed']))

route / api.php

Route::post('/index', 'Api\MyController@index')->middleware('auth.basic');

app / Http / Controllers / Api / MyController @ index

public function index(Request $request)
{
    return response()->json(array('status' => 'success'));
}

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Вы можете использовать Exception handler:

В пределах app/Exceptions/Handler.php:

public function render($request, Exception $exception)
{
    if ($exception instanceof UnauthorizedException) {
        return response()->json(['status'=>'auth failed'], Response::HTTP_UNAUTHORIZED);
    }

    return parent::render($request, $exception);
}

Не забудьте использовать UnauthorizedException и Response:

use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException
use Symfony\Component\HttpFoundation\Response

Проверьте здесь для получения дополнительной информации об обработчике исключений Laravel.

Надеюсь, это поможет.

0 голосов
/ 27 сентября 2019

Помните, что ошибка, которую вы получаете, специально разработана для отладки в localhost: если вы изменили APP_ENV на 'production' и APP_DEBUG=false , он не покажет весь стек ошибок

Однако, чтобы перехватить ошибку и обработать ее вручную, верните пользовательский ответ в App\Exceptions\Handler

public function render($request, Exception $exception)
{
    if ($exception instanceof Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException) {
        return response()->json(['status'=>'auth failed'], 401);
    }
    return parent::render($request, $exception);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...