/** * Authenticate the current request. * * @param array $providers * * @throws \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException * * @return mixed */ public function authenticate(array $providers = []) { $exceptionStack = []; // Spin through each of the registered authentication providers and attempt to // authenticate through one of them. This allows a developer to implement // and allow a number of different authentication mechanisms. foreach ($this->filterProviders($providers) as $provider) { try { $user = $provider->authenticate($this->router->getCurrentRequest(), $this->router->getCurrentRoute()); $this->providerUsed = $provider; return $this->user = $user; } catch (UnauthorizedHttpException $exception) { $exceptionStack[] = $exception; } catch (BadRequestHttpException $exception) { // We won't add this exception to the stack as it's thrown when the provider // is unable to authenticate due to the correct authorization header not // being set. We will throw an exception for this below. } } $this->throwUnauthorizedException($exceptionStack); }