Я работаю над проектом с использованием zend framework, php, mysql на ubuntu.

Я создал имя хоста test.dev на своем локальном компьютере и использую аутентификацию zend. Когда пользователь аутентифицируется с использованием аутентификации zend, я устанавливаю переменную сеанса для идентификатора вошедшего в систему пользователя. Я использую эту переменную сеанса (идентификатор пользователя) на разных страницах для уверенной аутентификации.

Вопрос: Теперь мне нужно создать поддомен. Я создал новое имя хоста mypage.test.dev на моем локальном компьютере. Оба имени хоста указывают на один и тот же каталог, например / var / www / test / public. Но когда я вхожу в test.dev , мне приходится снова входить в поддомен mypage.test.dev . Даже переменные сеанса test.dev недоступны на mypage.test.dev .

Как я могу войти на все поддомены, используя один логин?

Спасибо.

1
Naveed 23 Ноя 2009 в 09:39

3 ответа

Лучший ответ

Через некоторое время я получил свое решение.

Я добавил следующую строку в config.ini

session.cookie_domain = .test.dev

Затем добавил следующую строку в Bootstrap.php

Zend_Session::setOptions( $this->getOption('session') );

И переменные сеанса работают для всех поддоменов test.dev

1
Naveed 10 Дек 2009 в 15:27

Переменные сеанса хранятся для каждого конкретного адреса домена. И поэтому, если веб-сайт плохо закодирован, и вы входите в систему на http://mydomain.com, а затем заходите на сайт как http://www.mydomain.com, вы столкнетесь с той же ошибкой.

Одним из возможных решений этого является настройка веб-службы, которая позволяет вам получить доступ к другому домену и получить любые сохраненные переменные сеанса, а также аутентифицировать пользователя. Так, например, если я войду в test.dev, а затем перейду на mypage.test.dev, mypage.test.dev вызовет test.dev/auth-service/ для аутентификации пользователя, и если он успешно, затем верните все сохраненные переменные сеанса, чтобы их можно было сохранить в mypage.test.dev.

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

2
Noah Goodrich 23 Ноя 2009 в 09:50
Спасибо за ваш ответ. Подскажите, как мне это сделать в Zend Framework.
 – 
Naveed
24 Ноя 2009 в 09:34

Вы ищете это: http: //blog.pracucci .com / 2008/09/24 / zend-framework-and-session-cookies-through-subdomains /

1
Tomáš Fejfar 29 Ноя 2009 в 16:21