2009-09-03 12 views
9

soy bastante nuevo en Django y tratando un par de experimentos sencillos para obtener los pies mojados. Estoy ejecutando django 1.0, apache2 prefork y mod_wsgi. Estoy tratando de construir un sitio con la siguiente estructura urlDjango - proteger algunos caminos web con autenticación básica

/ 
/members 
/admin 

la raíz es básicamente un área pública.
la ruta de los miembros deben ser protegidos mediante la autenticación básica (probablemente autenticado por Apache)
la vía de administración debe protegerse utilizando el construido en la autenticación de Django.

siguiendo los ejemplos de la documentación que, básicamente, puede proteger a todo el sitio con la autenticación básica, pero eso no es lo que quiero.

excepto de configuración de host virtual:

WSGIScriptAlias//django/rc/apache/django.wsgi 
<Directory /django/rc/apache> 
AuthType Basic 
AuthName "Authentication Required" 
AuthUserFile "/django/_HTPASSWD/.htpasswd" 
Require valid-user 

# Order allow,deny 
# Allow from all 
</Directory> 

¿Puede alguien ayudarme a apuntar en la dirección correcta (o de plano dime = P) sobre cómo hacer esto posible?

gracias


edición: Después de jugar un poco he descubierto que puedo hacer algo como:

WSGIScriptAlias//django/rc/apache/django.wsgi 
<Directory /django/rc/apache> 
Order allow,deny 
Allow from all 
</Directory> 

WSGIScriptAlias /members /django/rc/apache_httpauth/django.wsgi 
<Directory /django/rc/apache_httpauth> 
AuthType Basic 
AuthName "Authentication Required" 
AuthUserFile "/django/_HTPASSWD/.htpasswd" 
Require valid-user 

</Directory> 

El archivo django.wsgi es básicamente el mismo archivo copiado en otro directorio por lo que WSGIScriptAlias ​​es diferente. Es hack-ish pero funciona ..

¿Hay una mejor manera de hacer lo que me gustaría?
¿Hay algún inconveniente para hacerlo así?

gracias

Respuesta

8

Cambio:

<Directory /django/rc/apache_httpauth> 
AuthType Basic 
AuthName "Authentication Required" 
AuthUserFile "/django/_HTPASSWD/.htpasswd" 
Require valid-user 
</Directory> 

a:

<Location /members> 
AuthType Basic 
AuthName "Authentication Required" 
AuthUserFile "/django/_HTPASSWD/.htpasswd" 
Require valid-user 
</Location> 

las que no creo que usted debe necesitar:

WSGIScriptAlias /members /django/rc/apache_httpauth/django.wsgi 
+0

el sitio entero se realiza en Django, no jsut la sección de administración. si saco WSGIScriptAlias, ¿cómo sabe apache cómo ejecutar el sitio django? es decir/members es una ruta web que se define en urls.py. no existe físicamente en el sistema de archivos. por cierto recuerdo haber leído cosas en tu blog de referencia en la materia Django en el pasado. solo quería decir thx. –

+0

Aún conserva las primeras WSGIScriptAlias ​​para montar la aplicación en el sitio raíz, simplemente elimine la URL secundaria. Presumo que finalmente abordan la misma solicitud. La directiva de ubicación solo aplica la restricción a ese subconjunto de URL para la aplicación principal. –

+0

ahh no noté que especificó la directiva "Ubicación" en lugar de la directiva "Directorio". Lo intentaré mañana. ¡Gracias! –

Cuestiones relacionadas