Метод репозитория вызывается в 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);
}