Как обрабатывать ошибки в retrieveById? - PullRequest
0 голосов
/ 06 августа 2020

Метод репозитория вызывается в UserProvider.

UnAuthorizedException выбрасывается в репозиторий.

В render () обработчика. php, я хочу перенаправить на страницу входа в случае UnAuthorizedException.

Однако это вызывает бесконечное l oop перенаправлений.

По этой причине я прокомментировал обработку перенаправления в Handler. php.

Когда я проверил поток процесса на панели отладки, было показано следующее:

start retrieveById
start retrieveById
start render

Почему retrieveById выполняется дважды?

Обработчик не обрабатывается. php запускается при возникновении исключения, как показано ниже?

start retrieveById
start render

App / Auth / UserProvider. php

class UserProvider implements UserProviderInterface {
  public function retrieveById($identifier) {
    \Debugbar::info("start retrieveById");
    /* Omit code */
    $customer_info = $this->customer_repository->getInfo($identifier);
    /* Omit code */
  }
}

CustomerRepository. php

public function getInfo(string $token) {
  $param['token'] = $token;
  // call api
  $response = $this->client->request('GET', 'endpoint', ['query' => $param, 'http_errors' => false]);
  $data = json_decode($response->getBody()->getContents(), true);

  if((int)$data['status'] === 1){
    throw new UnAuthorizedException('Unauthenticated');
  }
  return $data['results'];
}

Обработчик. php

public function render($request, Exception $exception) {
  \Debugbar::info("start render");
  if ($exception instanceof UnAuthorizedException) {
    if (Auth::check()) Auth::logout();
    return redirect()->guest(route('login'));
  }
  return parent::render($request, $exception);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...