.htaccess можно использовать и для установки пароля на доступ к определенным страницам или разделам вашего сайта. Делается это путем создания в нужном подкаталоге файла .htaccess, в который пишется следующее:
AuthType Basic AuthName "this is a test of protected realm" AuthUserFile /path/to/file/with/passwords <Limit GET POST> require valid-user </Limit>
Кроме того, нужно создать файл с паролями, путь к которому указывается в качестве параметра к директиве . Пароли в этом файле должны быть шифрованными, чего можно достигнуть с помощью программы htpasswd, входящей в поставку Apache. Если Вы набрали в unix shell команду htpasswd и система сообщила, что такого файла нет, выясните у своего хостинг-провайдера где же находится htpasswd. Пользователи Windows могут скачать этот файл: htpaswd.zip. Однако, допустим, htpasswd у нас доступен:
> htpasswd Usage: htpasswd [-cmdps] passwordfile username htpasswd -b[cmdps] passwordfile username password -c Create a new file.
Здесь не будут рассматриваться все параметры этой команды, но вы можете сами прочитать подробности, запустив htpasswd в unix shell или ознакомившись с документации по Apache.
Итак, изначально у нас еще нет файла с паролями и нам нужно его создать :
> htpasswd -c passwords test1 New password: Re-type new password: Adding password for user test1 >
После выполнения данной операции htpasswd создаст файл passwords, в котором окажется пользователь test1 и его пароль в зашифрованном виде:
> cat passwords test1:zgco1KREjBY8M >
А теперь мы хотим добавить еще одного пользователя. Так как файл с паролями у нас уже есть, мы просто не будем использовать ключ '-c' :
> htpasswd passwords test2 New password: Re-type new password: Adding password for user test2
Сейчас попробуйте обратиться к тому каталогу, в котором мы размещали .htaccess – браузер спросит у вас пароль, чего мы и добивались. Пока не будет введен правильный логин и пароль, посетитель не увидит соответствующей страницы.
В качестве параметра к директиве require мы указали valid-user. Это означает, что любой пользователь, который есть в используемом файле с паролями, может иметь доступ к защищенному ресурсу. Однако, согласитесь, удобно иметь все пароли в одном файле, а права на конкретные ресурсы давать только определенным пользователям. Это тоже реализуемо. Например, мы хотим дать доступ только пользователю test2. Делаем так :
require user test2
Еще можно объединить пользователей в группы и давать доступ не конкретным логинам, а группам. Это можно сделать с помощью директивы :
AuthGroupFile /path/to/file/with/groups
В файле /path/to/file/with/groups создаем группы примерно так :
Соответственно, директиву require будем использовать так :
require group group3
Механизмы ограничения доступа, которые реализованы в Apache, позволяют очень гибко управлять правами для пользователей и групп, что является очень важной возможностью. Если углубиться в изучение предмета, Вы сможете узнать и то, что логины и пароли, используемые для авторизации, можно хранить не только в файлах, но и в простейших базах данных формата BerkeleyDB - почитайте документацию по директиве . Также для хранения данных авторизации можно использовать практически любую СУБД (MySQL или PostgreSQL), но это уже выходит за рамки данного пункта.
Для тех, кто скачал htpaswd.zip: чтобы поставить пароль на какую-либо папку выполните (в принципе, об этом было рассказано выше, но, как говорится, повторение – мать его;)) следующее:
Создайте файл .htaccess в папке, которую нужно прикрыть паролем примерно такого содержания:
AuthType Basic AuthName "Введите логин и пароль" # Путь к файлу с паролями .htpasswd AuthUserFile Путь/.htpasswd require valid-user
Теперь, собственно, о создании файла .htpasswd: распакованный htpaswd.exe кидаем в удобную директорию (лучше в корень диска) и лезем в Start (Пуск) > Run (Выполнить) > command. Затем переходим в нашу директорию (надеюсь, не надо напоминать, что это делается командой cd… вот и хорошо, что не надо;)) и пальчиками набиваем:
Нажмите «Enter». Теперь на диске Z:\ должен появится файл .htpasswd. Переместите его в ту папку, путь до которой указали в файле .htaccess (Путь/.htpasswd). Все! Ваша папка прикрыта паролем!