code: public function beforeAction($action)
      {
          $response = $this->response ?: Yii::$app->getResponse();
  
          try {
              $identity = $this->authenticate(
                  $this->user ?: Yii::$app->getUser(),
                  $this->request ?: Yii::$app->getRequest(),
                  $response
              );
          } catch (UnauthorizedHttpException $e) {
              if ($this->isOptional($action)) {
                  return true;
              }
  
              throw $e;
          }
  
          if ($identity !== null || $this->isOptional($action)) {
              return true;
          }
  
          $this->challenge($response);
          $this->handleFailure($response);
  
          return false;
      }
docs: {@inheritdoc}