Приложение Zend Framework со страницами входа и регистрации на одном домене и другими страницами на поддомене - PullRequest
0 голосов
/ 07 февраля 2011

Мы разрабатываем приложение Zend Framework и хотим, чтобы страницы регистрации и страницы входа были на нашем домене, например, http://domain.com (теперь все страницы находятся на http://domain.com) и других страницах (где вы должны быть перенаправлено после аутентификации) на поддомен: http://subdomain.domain.com. Подскажите, пожалуйста, как это решить? Спасибо за любые идеи.

1 Ответ

1 голос
/ 11 июля 2011

Я делал подобные вещи в одном из моих главных приложений ZF. Это сложный вопрос из трех частей, но, надеюсь, это поможет вам начать в правильном направлении.

Первый - файл cookie сеанса. Вам нужно будет использовать параметр домена подстановочного знака, когда вы устанавливаете cookie сессии. В вашей начальной загрузке или где-то до того, когда вы обычно начинаете сеанс, включите строку, такую ​​как:

Zend_Session::start(array('cookie_domain' => '.domain.com'));

Обратите внимание на точку (".") Перед "domain.com". Это делает cookie применимым для domain.com, а также для всех поддоменов в нем.

Второй - это URL вашего сайта. Вы можете использовать метод gotoUrl() помощника действий Redirector. В конце метода действия, когда вы хотите перенаправить пользователя, используйте следующую строку:

$this->_redirector->gotoUrl('http://domain.com/somewhere/else');

Конечно, вы можете захотеть собрать строку URL другими способами, например, сохранить домен в параметре конфигурации и объединить путь, используя один из собственных методов ZF для создания пути URL. См. Документацию для Zend_Controller_Action_Helper_Redirector для получения дополнительной информации. Вам также нужно быть осторожным со всеми URL-адресами на вашем сайте и убедиться, что в каждую ссылку включен правильный домен.

Третий - это то, как ваше приложение интерпретирует маршруты, когда задействованы субдомены. Есть несколько способов сделать это, но один из них - создать модуль в вашем приложении, который соответствует каждому поддомену, который вы хотите использовать. Затем используйте Controller Plugin , чтобы перехватить нормальный механизм маршрутизации ZF и установить имя модуля соответствующим образом, основываясь на поддомене. Что-то вроде:

class My_Controller_Plugin_RouteMySubdomains extends Zend_Controller_Plugin_Abstract {

    public function routeShutdown(Zend_Controller_Request_Abstract $request) {
        $hostname = $request->getHttpHost();
        if (strlen($hostname) > strlen('domain.com')) {
            $moduleName = preg_replace("/\.domain\.com$/", '', $hostname);
            $request->setModuleName($moduleName);
        }
    }
}

Вы должны указать ZF использовать этот плагин. Если вы используете Zend_Application с файлом application.ini для базовой конфигурации, вам нужно добавить следующую строку:

resources.frontController.plugins.routeMySubdomains = "My_Controller_Plugin_RouteMySubdomains"

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...