Вопрос:

Laravel 5.5 basic auth login исключения

php laravel laravel-5.5

1519 просмотра

1 ответ

26 Репутация автора

В Laravel 5.5 при использовании встроенной базовой аутентификации неудачные попытки входа в систему обрабатываются laravel/framework/src/Illuminate/Auth/SessionGuard.php:

throw new UnauthorizedHttpException('Basic', 'Invalid credentials.');

Однако, когда отладка отключена, возвращается общее сообщение об ошибке «К сожалению, что-то пошло не так».

Я пытаюсь отредактировать наш обработчик исключений (app \ Exceptions \ Handler.php), чтобы он возвращал пользовательскую ошибку JSON при возникновении ошибки аутентификации.

 /**
 * Render an exception into an HTTP response.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Exception  $exception
 * @return \Illuminate\Http\Response
 */
public function render($request, Exception $exception)
{

    //Handle API authentication failure
    if ($exception instanceof \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException) {
        return response()->json(['error' => 'Invalid user name or password.'], 401);
    }

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

Однако это всегда возвращает это сообщение об ошибке, даже когда пользователь вводит действительные учетные данные. Если я закомментирую ifблок, те же учетные данные внезапно сработают. Что я делаю неправильно?

Автор: Kevin Источник Размещён: 08.11.2017 10:56

Ответы (1)


0 плюса

26 Репутация автора

Ответ должен содержать соответствующий заголовок.

public function render($request, Exception $exception)
{

    //Handle API authentication failure
    if ($exception instanceof \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException) {
        $headers = array('WWW-Authenticate' => 'Basic');
        return response()->json(['error' => 'Invalid user name or password.'], 401);
    }

    return parent::render($request, $exception);
}
Автор: Kevin Размещён: 09.11.2017 08:07
Вопросы из категории :
32x32