Авторизация CakePHP -> Логин не работает в производстве, но работает в тесте - PullRequest
0 голосов
/ 09 октября 2010

У меня есть веб-сайт CakePHP, который отлично работает.

Я только что разработал новую функциональность, которая в какой-то момент автоматически регистрирует пользователя и перенаправляет его на страницу за стеной входа в систему.

Это прекрасно работает на моем компьютере разработчика, но в процессе работы пользователь перенаправляется на страницу входа в систему.

Соответствующий код: (не очень)

    $objCustomer = $this->Customer->findById($customerId);
    $this->Auth->login($objCustomer);
    $this->redirect("/customers/signup");

Клиент - это модель, которая используется для аутентификации.

На сервере я вижу, что меня перенаправляют в / Customers / Signup, а меня перенаправляют в / customer / login

Больше всего меня смущает то, что это прекрасно работает на моей машине.

Я сбросил возвращаемое значение Auth-> Login на сервере, и оно возвращает 1, поэтому в теории все в порядке, и пользователь должен был войти в систему.

Некоторые вещи, которые я могу придумать, отличаются между моей машиной и сервером:

  • Машина разработки - Windows, Сервер - Linux. Иногда это приводит к проблемам с учетом регистра, но метод регистрации, на который я перенаправляю, полностью в нижнем регистре, я не вижу, где здесь может быть такая проблема.
  • Машина разработки - IIS, Сервер - LiteSpeed. Может, Litespeed что-то накручивает? Это будет первый раз за год, когда я запускаю этот сайт в производстве, и я обнаружил что-то другое из-за LiteSpeed ​​
  • Сайт производства работает по SSL, а dev - нет. Я не понимаю, как это может быть проблемой.

Любые идеи бесконечно приветствуются!

Спасибо!

Ответы [ 2 ]

0 голосов
/ 20 октября 2010

После LOOOONG процесса пробовать разные странные вещи, получается, что все сводится к следующему:

ini_set('session.referer_check', $this->host);

Это часть стандартных функций безопасности CakePHP ... Он устанавливает этот параметр INI.

Если запрос к действию, которое вызовет Auth-> login, поступает с другого хоста (домен / поддомен / что угодно), PHP сочтет сеанс недействительным, что фактически прекращает попытку автоматического входа.

0 голосов
/ 09 октября 2010

У меня тоже были проблемы с аутентификацией, работающей нормально на моей машине в режиме разработки, но не работающей на сервере в рабочем режиме.Удивительно, но когда я переключил сервер в режим разработки, он начал работать правильно.Затем я вернулся к производству, и он все еще работал.Возможно, это была какая-то проблема с кэшем.

...