Задать вопрос

Перестала работать авторизация в Yii после смены VPS?

В продолжение к Почему у сервера какой-то левый hostname?

Перестала работать авторизация. Проблема в том, что после успешной валидации происходит редирект на главную, но авторизации не происходит. Причем в консоли firebug следующие странности:

0540a3da17484ccd854ff55bc05ee8d9.png94af45939e5b499aa10addd6def0c968.png620f3661e6cf4194af0b01126e5fb10d.png

В ответ на post-запрос приходит какая-то левая фраза «Перезагрузите страницу, чтобы получить источник для: http://site.ru/login»

Код контроллера AuthController:

public function actionLogin() {
  if (!Yii::app()->user->isGuest)
    $this->redirect(Yii::app()->homeUrl);
  
  $user = new User(User::SCENARIO_LOGIN);
  $request = Yii::app()->request;
  /*$ajaxRequest = $request->getPost('ajax', false);
  if ($ajaxRequest && $ajaxRequest === 'login-form') {
    echo CActiveForm::validate($user);
    Yii::app()->end();
  }*/
  $formData = $request->getPost(get_class($user), false);
  
  if ($formData) {
    $user->attributes = $formData;
    if ($user->validate()) {
      Yii::app()->user->setFlash('success', 'Welcome back, ' . Yii::app()->user->email . '!');
      //$this->redirect(Yii::app()->user->returnUrl);
      $this->redirect(Yii::app()->homeUrl);
    }
  }
  
  $this->pageTitle[] = Yii::t('site', 'Login');
  $this->render('login', compact(array('user')));
}


Началось все после переезда на другой VPS. Сначала думал, что это из-за левого hostname у сервера (была такая проблема), но после его починки ситуация не изменилась.

Куда смотреть?
  • Вопрос задан
  • 3798 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
sanchezzzhak
@sanchezzzhak
Ля ля ля...
Все верно участок кода выполняется
if ($user->validate()) {
      Yii::app()->user->setFlash('success', 'Welcome back, ' . Yii::app()->user->email . '!');
      //$this->redirect(Yii::app()->user->returnUrl);
      $this->redirect(Yii::app()->homeUrl);
    }

Посмотрите в сессии что не будь есть?

Если вы используйте в коде редирект то используйте точку остановки;
return; или exit(1) оно же Yii::app()->end();
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@mtdn
Проверь права на запись php в папку сессий. В centos по дефолту /var/lib/php/sessions
Ответ написан
Комментировать
Urichalex
@Urichalex
Кратко о себе)
А где вообще происходит авторизация? В действии нет ни создания идентити ни аутентификации никакой. То, что свалидировалась форма - не значит, что произошла авторизация. Или же это у вас в модели в валидации логин происходит?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы