file_get_contents из проекта yii2 всегда возвращает страницу входа

1

У меня есть 2 проекта (A использует Yii2 и B, используя простой PHP).

Я хочу, чтобы B получал содержимое файла из A с помощью file_get_contents.

Но каждый раз, когда B запрашивает A, он всегда дает мне страницу входа.

Вот мой код...

AuthController.php

    public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'only' => ['service'],
                'rules' => [
                    [
                        'actions' => ['service'],
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                ],
            ],

        ];
    }

    public function beforeAction($action)
    {
        if ($action->id == 'service')
            Yii::$app->controller->enableCsrfValidation = false;
        return parent::beforeAction($action);
    }


    public function actionService()
    {
        $status = 200;
        $status_header = 'HTTP/1.1 ' . $status . ' ' .       $this->_getStatusCodeMessage($status);
          $content_type="application/json; charset=utf-8";

          header($status_header);
          header('Content-type: ' . $content_type);
          header('X-Powered-By: ' . "Nintriva <nintriva.com>");
          echo json_encode(["hello","w"]);       
    }

    private function _getStatusCodeMessage($status)
  {
      $codes = Array(
      200 => 'OK',
      400 => 'Bad Request',
      401 => 'Unauthorized',
      402 => 'Payment Required',
      403 => 'Forbidden',
      404 => 'Not Found',
      500 => 'Internal Server Error',
      501 => 'Not Implemented',
      );
      return (isset($codes[$status])) ? $codes[$status] : '';
  }

}

b.php

$url = 'http://localhost/now/basic/web/index.php?r=auth/service';
$result = file_get_contents($url);
print_r($result);

Что-то не так? Спасибо

  • 0
    Вы должны отключить фильтр AccessControl для ваших действий ...
  • 0
    Как сказал Double H, вы пытаетесь получить доступ к странице, на которой требуется вход без входа в систему. Поэтому, конечно, вы получаете страницу входа каждый день без проблем. Чтобы обойти это, вы должны либо отключить AccessControl, если это уместно, либо реализовать какой-либо другой вид аутентификации между двумя серверами.
Теги:
yii2

1 ответ

3
Лучший ответ

измените правила. сделать это так

'rules' => [
                    [
                        'actions' => ['service'],
                        'allow' => true,
                    ],
                ],

просто удалите

'roles' => ['@'],

или просто добавьте это

'roles' => ['?','@'],
  • 0
    это дает мне эту ошибку Вызов функции-члена checkAccess () на ноль
  • 0
    попробуй это. это позволит вам даже не авторизоваться
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню