Pergunta
Eu tenho uma estrutura como esta:
/home
/home/dir1
/home/dir2
Agora, quando alguém vai para / home, ele é convidado para nome de usuário e senha (de forma) e eu as informações da sessão set em PHP para os arquivos restantes do / home. Agora / home / dir1 e / home / dir2 são protegidos por htpasswd mas o mesmo nome de usuário e senha. Eu não quero que o usuário re-inserir seu nome de usuário e senha novamente quando eles vão para / home / dir1 ... Também quando eu sair de / para casa, eu quer sair de / home / dir1 também. Você pode por favor conselhos sobre como conseguir isso?
Solução
Este deve ser o comportamento padrão.
Isto é, se você estiver usando Apache e arquivos .htaccess para configurar a autenticação HTTP, quaisquer regras que se aplicam a um diretório também será aplicada aos seus diretórios filho, e ele será tratado pelo navegador como todos um login.
Se você quer que agem de forma diferente, ou seja, se você queria algumas seções do local a ser tratado como exigindo um login completamente separado, você deve especificar um 'reino' para cada seção usando a diretiva AuthName no .htaccess. Mais informações aqui . No entanto, se você não fizer isso, ele vai ser sempre tratados como todos parte do mesmo login.
A coisa sobre HTTP autenticação é que não há nenhuma maneira de 'log out', pelo menos não a menos que o navegador fornece esse recurso. A única maneira que a maioria dos navegadores permite que você faça seu logout é terminando a sessão do navegador (ou seja, fechar o navegador). E sim, uma vez que você fizer isso, você será desconectado do / home, / home / dir1, / home / dir2 e todos os diretórios em todos os sites / domínios.
Outras dicas
Em Apache, desde que ambas as pastas têm o mesmo AuthName e estão no mesmo local que eles devem compartilhar uma senha.
Ambos os diretórios pode ter um arquivo .htaccess assim:
AuthName "My Protect Folder"
AuthType basic
AuthUserFile /somewhere/htusers
require valid-user