6 votes

Sites Django distincts avec un backend commun d'authentification/enregistrement

Je dois diviser mon application Django actuelle en deux sites.

Le site A sera le site public, qui contiendra toutes les pages statiques et le système d'enregistrement.

L'autre site - le site B - est le site des utilisateurs enregistrés. Ils peuvent également se connecter au site d'application par le biais du site B.

Si je ne me trompe pas, je peux utiliser django.contrib.sites pour accomplir la tâche d'avoir plusieurs sites mais qui peuvent avoir un backend commun d'authentification/enregistrement ?

Comment puis-je y parvenir ?

Merci.

2voto

Thomas Points 7109

Dans ce cas, vous auriez 2 fichiers settings.py appelés settings_A.py et settings_B.py qui spécifient from settings import *

A aurait SITE=1 et B aurait SITE=B. Vous pouvez ensuite définir ces fichiers dans vos configurations apache en définissant la variable d'environnement pour chaque hôte virtuel DJANGO_SETTINGS_MODULE=settings_A et DJANGO_SETTINGS_MODULE=settings_B.

Ensuite, vous configurez l'application contrib.sites avec vos deux noms de domaine liés à l'ID de site approprié, et vos pages plates pourront être liées à l'un ou l'autre ou aux deux sites.

Enfin, dans settings_A.py settings_B.py, soit vous spécifiez des urlconfs Root distincts, soit vous utilisez settings.SITE dans vos urlconfs pour activer et désactiver des groupes d'urls pour chaque site.

J'espère que cela vous aidera

EDIT : Pour clarifier : tant que vous utilisez la même base de données et la même SECRET_KEY entre les deux sites, vous pouvez utiliser les mêmes comptes utilisateurs entre eux également. Si les sites sont de la forme exemple.com et private.exemple.com, le fait de définir SESSION_COOKIE_DOMAIN à .exemple.com permettra à la session de se reporter entre les deux sites.

2voto

André Caron Points 19543

Le programme de Django django.contrib.sites est agréable si les deux sites fonctionnent sous le même serveur et accèdent à la même base de données. Si vous avez une application distribuée (différents sites sur différents hôtes ou différents sites sur différentes bases de données), vous pouvez recourir à des solutions d'authentification unique.

J'utilise OpenID avec un fournisseur personnalisé pour centraliser les connexions entre les applications fonctionnant sur différentes bases de données. D'autres solutions incluent CAS ( fournisseur y consommateur ).

0voto

Density 21.5 Points 1449

Vous pourriez utiliser l'authentification LDAP (externe) pour les deux sites. Vous auriez besoin d'un serveur LDAP accessible par les deux sites. Je n'ai jamais utilisé cette méthode et je ne sais pas si elle s'intègre bien à l'authentification Django. Voir http://packages.python.org/django-auth-ldap/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X