2012-05-01 12 views
5

Estamos tratando de proteger un par de recursos diferentes en nuestra instalación de ModX. El código .htaccess actual es la siguiente (no incluye todas las cosas ModX)¿Cómo protejo con contraseña los recursos en un sitio web ModX usando htaccess y htpasswd?

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

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

El objetivo del ejercicio es la protección de los recursos siguientes:

He intentado varias combinaciones de LocationsMatch, Locations, Files y Filesmatch y no puedo hacer que funcione.

Gracias de antemano

+1

Yo diría: comience a leer el manual de esas directivas, que al menos le dará la idea de por qué lo que intentó hasta ahora * no funciona *: http: //httpd.apache.org/docs/current/mod/core.html # filesmatch – hakre

+0

Lea cada palabra y pruebe todas las opciones que pueda explorar. Lo que esto necesita es alguien con experiencia en el logro de este problema, que debe ser bastante común. – user1346416

+1

¿Por qué está utilizando .htaccess y no la administración de recursos/seguridad integrada de modx? –

Respuesta

0

Esto es lo que la solución total fue:

Si alguien más tiene que saber, he creado un fragmento llamado passwordprotect y poner en la parte superior de la página: [ [contraseñaprotegida]]. Entonces puse en el siguiente código (una adaptación de la respuesta anterior):

<?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: Si usted está encontrando que esto a veces funciona ya veces no funciona, esto es probablemente porque el uso de [[passwordprotect] ], modx guardará en caché el fragmento. Logré un mayor éxito con: [[! Passwordprotect]] en Revolution. Creo que el código es [! Passwordprotect!] En Evolution. Los signos de admiración solo denotan no almacenar en caché el fragmento. Espero que ayude a alguien!

+0

Si encuentra que esto a veces funciona y a veces no funciona, esto es probablemente porque usando [[passwordprotect]], modx guardará en caché el fragmento. – user1346416

+0

Además, el fragmento en caché puede tener el usuario ANTERIOR autenticado y no el nuevo. Lea a continuación para la implementación correcta. –

0

No hay absolutamente ninguna razón para hacerlo y anula todo el propósito de las ACL de MODX Revolution. La respuesta correcta es:

  1. Establezca un grupo de usuarios con un rol mínimo que pueda acceder a los recursos.
  2. Cree recursos de prueba dentro del grupo de recursos.
  3. Agregue el administrador del sitio al grupo de recursos.
  4. Cree un usuario de prueba en el grupo de recursos.
  5. Actualiza la memoria caché del sitio.
  6. Cierre la sesión de todos los usuarios, incluido usted mismo.
  7. Pruebe las ACL, con el administrador del sitio tanto en el administrador como en el front-end.
  8. Cierre la sesión o utilice un navegador completamente diferente y pruébelo con el usuario de la prueba.
  9. Una vez que esté funcionando, mueva los documentos protegidos al grupo de recursos.
  10. Agregue usuarios al grupo al que desea tener acceso.
  11. Eliminar el fragmento.

Si necesita más ayuda, obtenga una copia de mi libro o visite mi sitio.

Cuestiones relacionadas