Http basic Authorization — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
Строка 43: Строка 43:
 
Тогда, при запросе имя_вашего_сайта/admin, браузер затребует ввести авторизационные данные, если он будут введены верно, то произойдет редирект на стандартную форму авторизации в административную панель UMI.CMS.
 
Тогда, при запросе имя_вашего_сайта/admin, браузер затребует ввести авторизационные данные, если он будут введены верно, то произойдет редирект на стандартную форму авторизации в административную панель UMI.CMS.
  
[[Файл:Файл:Basic_http_auth.png]]
+
[[Файл:Basic_http_auth.png]]
  
 
Если Вы не хотите, еще раз вводить те же данные, то можете внести правки в файл check.php:
 
Если Вы не хотите, еще раз вводить те же данные, то можете внести правки в файл check.php:

Версия 15:16, 18 марта 2014

Актуально для версии 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.

Basic http auth.png

Если Вы не хотите, еще раз вводить те же данные, то можете внести правки в файл 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.