Você que precisa fazer o controle de diretórios de publicação do seu servidor web
Apache e não quer criar um arquivo separado para isso. Você que já tem uma base de dados no MySQL, de usuários que são autenticados em outro sistema e quer aproveitar esta mesma base para o Apache. Pois bem, aqui veremos como se faz isso usando o
mod_auth_mysql do Apache. Simples e rápido.
Usaremos a distribuição Debian, porém a filosofia vale para todas as distribuições que suportam o Apache, bastando você fazer o download do fonte, compilar e entender como o Apache está organizado em seu sistema.
Baixe o fonte em:
http://sourceforge.net/projects/mod-auth-mysql/
1. Instalação do módulo:
No Debian, usamos o comando apt-get para instalar:
# apt-get install libapache2-mod-auth-mysql
2. Habilitando o módulo no Apache:
O Debian vem com um script que facilita o processo de habilitar módulos no Apache da maneira como ele é organizado em seu diretório de configuração. O
a2enmod, que significa "apache2 enable module". Usamos então o comando:
# a2enmod auth_mysql
Para verificar se tudo ocorreu bem, você pode confirmar se ele criou o arquivo "auth_mysql.load" dentro do diretório "/etc/apache2/mods-available/" e um link simbólico com o mesmo nome no diretório "/etc/apache2/mods-enabled/".
O Apache lê e inclui no apache2.conf, todos os arquivos do diretório "/mods-enabled/" que terminam com a extensão ".conf" e ".load". No nosso caso, somente o arquivo "auth_mysql.load" interessa.
Verificando o conteúdo do arquivo:
# cat /etc/apache2/mods-enabled/auth_mysql.load
Obtemos a saída:
LoadModule auth_mysql_module /usr/lib/apache2/modules/mod_auth_mysql.so
Que é apenas o módulo auth_mysql_module sendo carregado no arquivo de configuração do Apache.
3. Configurando o Apache para o banco MySQL:
Edite o arquivo httpd.conf:
# mcedit /etc/apache2/httpd.conf
Acrescente a linha para comunicação com o banco:
Auth_MySQL_Info localhost UsuarioDoBanco SenhaDoUsuarioDoBanco
Obs.: localhost = Esse parâmetro deve ser onde está seu banco, se não estiver na mesma máquina, coloque o caminho da rede.
Tudo certo, agora precisamos fazer o Apache ler as configurações novas. Use o comando:
# invoke-rc.d apache2 reload
4. Protegendo o diretório web com .htaccess:
Usando o diretório "/var/www/site/dir_protegido" como exemplo, criamos um arquivo .htaccess dentro dele:
# mcedit /var/www/site/dir_protegido/.htaccess
Dentro deste arquivo incluímos as seguintes configurações:
AuthName "Area restrita. Identifique-se"
AuthType Basic
AuthUserFile /dev/null
AuthBasicAuthoritative Off
Auth_MYSQL On
Auth_MySQL_Authoritative On
Auth_MySQL_DB NomeBancoMysql
Auth_MySQL_Password_Table TABELA_SENHA
Auth_MySQL_Username_Field CAMPO_USUARIO
Auth_MySQL_Password_Field CAMPO_SENHA
Auth_MySQL_Encryption_Types TIPO_DE_CRIPTOGRAFIA
Auth_MySQL_Empty_Passwords Off
Require valid-user
Explicando alguns campos:
- Auth_MySQL_DB -> É o campo que você informa o nome do seu banco de dados lá do MySQL
- Auth_MySQL_Password_Table -> A tabela dentro do banco de dados onde contém LOGIN e SENHA
- Auth_MySQL_Username_Field -> O campo da tabela que contem o LOGIN do usuário
- Auth_MySQL_Password_Field -> O campo da tabela que contem a SENHA do usuário
- Auth_MySQL_Encryption_Types -> Quais os tipos de criptografia que ele aceita no campo SENHA.
Os tipos de Encryption_Types são:
- Plaintext -> Texto plano (sem criptografia)
- Crypt_DES -> Senha criptografada com a função ENCRYPT()
- MySQL -> Senha criptografada com a função PASSWORD()
Pronto! Agora você já pode acessar o diretório e fazer o teste.
http://meusite/site/dir_protegido
Existem outras opções interessantes, leia na fonte da pesquisa.
Espero ter ajudado!
Fonte:
http://www.cgi101.com/book/ch20/mod_auth_mysql.html
Nenhum comentário foi encontrado.