2012-05-01 13 views
5

Stiamo provando a proteggere un paio di risorse diverse nella nostra installazione ModX. Il codice .htaccess attuale è la seguente (non incluse tutte le cose MODx)Come posso proteggere con password le risorse in un sito Web ModX usando htaccess e htpasswd?

AuthName "Dialog prompt" 
AuthType Basic 
AuthUserFile /var/www/vhosts/mywebsite.co.uk/.htpasswd 

<FilesMatch ^index.php\?q=71$> 
    require valid-user 
</FilesMatch> 

Lo scopo dell'esercizio è quello di proteggere le seguenti risorse:

Ho provato varie combinazioni di LocationsMatch, Locations, Files e Filesmatch e non riesco a farlo funzionare.

Grazie in anticipo

+1

Direi: Inizia a leggere il manuale di quelle direttive, che almeno ti forniranno informazioni sul motivo per cui ciò che hai provato finora * non funziona *: http: //httpd.apache.org/docs/current/mod/core.html # filesmatch – hakre

+0

Leggi ogni parola e prova ogni opzione che posso esplorare. Ciò di cui ha bisogno è probabilmente qualcuno con una certa esperienza nel raggiungere questo problema che deve essere abbastanza comune. – user1346416

+1

Perché stai usando .htaccess e non la gestione integrata delle risorse/sicurezza di modx? –

risposta

0

Questo è ciò che la soluzione totale è stato di:

Se qualcun altro ha bisogno di sapere, ho creato un frammento chiamato PasswordProtect e messo in cima alla pagina: [ [PasswordProtect]]. poi ho messo nel codice seguente (un adattamento della risposta di cui sopra):

<?php 

if(isset($_SERVER['PHP_AUTH_USER']) && ($_SERVER['PHP_AUTH_USER']=='user') &&  ($_SERVER['PHP_AUTH_PW']=='password')) 
{ 
    echo 'You are successfully logged in.'; 
} else { 
    header('WWW-Authenticate: Basic realm="Protected area"'); 
    header('HTTP/1.0 401 Unauthorized'); 
    echo 'Text to send if user hits Cancel button'; 
    exit; 
} 

EDIT: Se si stanno scoprendo che questo a volte funziona ea volte non funziona, questo è probabilmente perché utilizzando [[PasswordProtect] ], modx memorizza nella cache lo snippet. Ho avuto un successo migliore con: [[! Passwordprotect]] su Revolution. Penso che il codice sia [! Passwordprotect!] Su Evolution. I punti esclamativi indicano solo di non memorizzare nella cache lo snippet. Spero che aiuti qualcuno!

+0

Se stai scoprendo che questo a volte funziona e talvolta non funziona, questo è probabilmente dovuto all'uso di [[passwordprotect]], modx memorizzerà nella cache lo snippet. – user1346416

+0

Inoltre, lo snippet memorizzato nella cache potrebbe avere l'utente PREVIOUS autenticato e non quello nuovo. Leggi sotto per la corretta implementazione. –

0

Non c'è assolutamente alcun motivo per fare ciò e svuota l'intero scopo degli ACL della MODX Revolution. La risposta corretta è:

  1. Stabilire un gruppo di utenti con un ruolo minimo che può accedere alle risorse.
  2. Creare una risorsa di test all'interno del gruppo di risorse.
  3. Aggiungere l'amministratore del sito al gruppo di risorse.
  4. Creare un utente di prova nel gruppo di risorse.
  5. Aggiorna la cache del sito.
  6. Disconnette tutti gli utenti, incluso te stesso.
  7. Verificare gli ACL - con l'amministratore del sito sia nel gestore che nel front-end.
  8. Disconnettersi o utilizzare un browser completamente diverso e testare con l'utente di prova.
  9. Una volta in funzione, spostare i documenti protetti nel gruppo di risorse.
  10. Aggiungere utenti al gruppo a cui si desidera avere accesso.
  11. Rimuovere lo snippet.

Se hai bisogno di più aiuto prendi una copia del mio libro o visita il mio sito.

Problemi correlati