HTTPS авторизация и регистрация
Периодически в личных сообщениях у меня интересуются можно ли с помощью плагина «HTTPS Detect» сделать так, чтобы авторизация и регистрация на сайте осуществлялись по HTTPS протоколу, а дальнейшая работа — по HTTP (а некоторые готовы даже платить деньги). В принципе, плагин в данном случае играет вспомогательную роль поддержки HTTPS протокола, а непосредственно для решения задачи необходимо выполнить следующие действия:
1) изменить все ссылки на страницы "/login" и "/registration" на HTTPS версию (независимо от протокола входа), а ссылки на остальные страницы — на HTTP версию;
2) организовать переадресацию со страниц "/login" и "/registration" на HTTPS версию, а со всех остальных страниц — на HTTP версию;
3) заблокировать работу AJAX авторизации и регистрации.
Для изменения ссылок необходимо заменить функцию GetPath в файле "/engine/classes/Router.class.php" на следующий код:
Переадресацию можно реализовать с помощью файла ".htaccess", настроек nginx или путем замены функции «ParseUrl» в файле "/engine/classes/Router.class.php" на следующий код:
Блокировка AJAX версии авторизации и регистрации необходима, поскольку генерируются разные значения LIVESTREET_SECURITY_KEY. В шаблонах «Synio» и «Developer» для этого необходимо в файлах шаблона («header_top.tpl» и «footer.tpl») удалить у ссылок на регистрации и авторизацию назначение классов «js-registration-form-show» и «js-login-form-show».
Для плагина «HTTPS Detect» можно отключить коррекцию изображений и видео в тексте (установить параметры $config['correct_img_src'] и $config['correct_video_src'] в значение false).
1) изменить все ссылки на страницы "/login" и "/registration" на HTTPS версию (независимо от протокола входа), а ссылки на остальные страницы — на HTTP версию;
2) организовать переадресацию со страниц "/login" и "/registration" на HTTPS версию, а со всех остальных страниц — на HTTP версию;
3) заблокировать работу AJAX авторизации и регистрации.
Для изменения ссылок необходимо заменить функцию GetPath в файле "/engine/classes/Router.class.php" на следующий код:
static public function GetPath($action) { // Если пользователь запросил action по умолчанию $sPage = ($action == 'default') ? self::getInstance()->aConfigRoute['config']['action_default'] : $action; // Смотрим, есть ли правило rewrite $sPage = self::getInstance()->Rewrite($sPage); $sRootWeb = Config::Get('path.root.web'); if ($action == 'login' || $action == 'registration') $sRootWeb = str_replace('http://', 'https://', $sRootWeb); else $sRootWeb = str_replace('https://', 'http://', $sRootWeb); return rtrim($sRootWeb,'/')."/$sPage/"; }
Переадресацию можно реализовать с помощью файла ".htaccess", настроек nginx или путем замены функции «ParseUrl» в файле "/engine/classes/Router.class.php" на следующий код:
protected function ParseUrl() { $sReq = $this->GetRequestUri(); $aRequestUrl=$this->GetRequestArray($sReq); $aRequestUrl=$this->RewriteRequest($aRequestUrl); self::$sAction=array_shift($aRequestUrl); self::$sActionEvent=array_shift($aRequestUrl); self::$aParams=$aRequestUrl; $bHttps = Config::Get('plugin.httpsdetect.https'); $sUrl = self::$sPathWebCurrent; if ((self::$sAction == 'login' || self::$sAction == 'registration') && !$bHttps) { $sUrl = str_replace('http://', 'https://', $sUrl); func_header_location($sUrl); } elseif (self::$sAction != 'login' && self::$sAction != 'registration' && $bHttps) { $sUrl = str_replace('https://', 'http://', $sUrl); func_header_location($sUrl); } }
Блокировка AJAX версии авторизации и регистрации необходима, поскольку генерируются разные значения LIVESTREET_SECURITY_KEY. В шаблонах «Synio» и «Developer» для этого необходимо в файлах шаблона («header_top.tpl» и «footer.tpl») удалить у ссылок на регистрации и авторизацию назначение классов «js-registration-form-show» и «js-login-form-show».
Для плагина «HTTPS Detect» можно отключить коррекцию изображений и видео в тексте (установить параметры $config['correct_img_src'] и $config['correct_video_src'] в значение false).
Предлагаем профессиональное оборудование для сетей, в частности коммутаторы Cisco Catalyst 6500.
5 комментариев
Сформулирую вопрос иначе — почему бы не отказаться от http, если есть возможность пользоваться https?
Но я лично согласен, что лучше ограничиться одной HTTPS версией, для меня был вопрос из серии «получится ли». Получилось. :)
6 числа ТИЦ вернулся для https, который был на http.