Http basic Authorization
Материал из Umicms
Версия от 15:15, 18 марта 2014; Mad grant (обсуждение | вклад)
Актуально для версии 2.9.5
Задача
Закрыть страницу /admin дополнительной http авторизацией.
Решение
Для решения задачи в .htaccess добавьте строку:
RewriteCond %{REQUEST_URI} ^(/admin)$
RewriteRule ^(.) /security/check.php [L,R]
Потом создайте в корневой директории папку "security" и положите в нее:
1) файл .htpasswd, о том как его получить и заполнить данными можно прочитать, например, вот здесь.
2) файл .htaccess следующего содержания:
AuthType Basic
AuthName "private area"
AuthUserFile /home/domains/c-cmac/htdocs/security/.htpasswd
require valid-user
- в AuthName укажите желаемое сообщение в форме авторизации.
- в AuthUserFile укажите абсолютный путь до файла .htpasswd, см. 1).
3) php файл check.php следующего содержания:
<?php
include '../standalone.php';
$buffer = new HTTPOutputBuffer;
$buffer->redirect("/admin/news/lists/", '301 Moved Permanently', 301);
?>
Тогда, при запросе имя_вашего_сайта/admin, браузер затребует ввести авторизационные данные, если он будут введены верно, то произойдет редирект на стандартную форму авторизации в административную панель UMI.CMS.
Если Вы не хотите, еще раз вводить те же данные, то можете внести правки в файл check.php:
include '../standalone.php';
$login = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];
$buffer = new HTTPOutputBuffer;
$buffer->redirect("/admin/news/lists/?u-login=$login&u-password=$pass", '301 Moved Permanently', 301);
- Из-за особенностей архитектуры UMI.CMS второй версии полноценно закрыть всю административную панель этим способом не получится, но можно хотя бы закрыть самый очевидный адрес /admin.