Доступ к сайту через SQL

Когда пользователей много, доступ к сайту логичней ограничить через авторизацию по SQL. Для этого необходимо подключить в Apache модуль mod_authn_dbd. В Gentoo Apache необходимо собрать с USE_EXPAND флагом apache2_modules_authz_dbd.

Код необходимо прописать в конфигурации виртуального хоста (не в .htaccess):

# mod_dbd configuration
DBDriver pgsql
DBDParams "dbname=apacheauth user=apache password=xxxxxx"
 
DBDMin  4
DBDKeep 8
DBDMax  20
DBDExptime 300
 
<Directory /usr/www/myhost/private>
  # mod_authn_core and mod_auth_basic configuration
  # for mod_authn_dbd
  AuthType Basic
  AuthName "My Server"
  AuthBasicProvider dbd
 
  # mod_authz_core configuration
  Require valid-user
 
  # mod_authn_dbd SQL query to authenticate a user
  AuthDBDUserPWQuery "SELECT password FROM authn WHERE user = %s"
</Directory>

В приведенном выше примере авторизация происходит через PostgreSQL. Данные пользователей хранятся в таблице authn базы данных apacheauth. Подключение происходит используя имя пользователя apache и пароль xxxxxx. /usr/www/myhost/private — каталог, который необходимо закрыть.

Для подключения к MySQL следует в конфигурации указывать:

# mod_dbd configuration
DBDriver mysql
DBDParams host=localhost,dbname=apacheauth,user=apache,pass=xxxxxx