2010-09-03 4 views
1

J'ai une application Java existante qui utilise Acegi pour l'authentification/autorisation. Notre nouvelle interface web serait de préférence écrite en Django. Je souhaite que Django maintienne les utilisateurs - enregistrement, etc. Django partagera ou mettra à jour les données d'authentification Acegi afin que l'ancienne application fonctionne et que les utilisateurs n'aient pas besoin d'utiliser deux types d'informations d'identification (peut-être même partager un cookie d'authentification). Je me demandais si quelqu'un traitait déjà d'un problème similaire et si oui quelle approche a été choisie.Intégration de Django avec Acegi

Merci

Répondre

0

rappelez-vous quoi que vous fassiez avec Django, il est encore Python, donc juste parce que Django ne l'a pas/ne le fait pas de cette façon, ne signifie pas que vous ne pouvez pas . En outre, d'un autre point de vue, rien ne vous empêche d'utiliser des éléments du framework Django en dehors de l'application traditionnelle Django.

Je ne aime pas particulièrement l'interface d'administration de Django, bien que je ne l'utilise Form et ModelForm beaucoup en dehors de celui-ci. J'ai implémenté mon propre système d'authentification - tout ce dont vous avez besoin, ce sont des fonctions qui vous permettent de vous connecter/déconnecter, etc. et une interface avec ces données. Il (utilisateurs/groupes etc) ne doit pas être représenté comme un modèle Django bien que ce soit ce que j'ai fait pour la facilité. Rien ne vous empêche de vous accrocher à un autre ORM ou d'écrire le vôtre pour acegi. Alternativement, si l'écriture de votre propre couche est assez simple, faites-le. Je recommanderais de vous connecter aux processeurs de contexte pour Django et le middleware et la bibliothèque de Django, car votre travail sera simplifié et il fonctionnera de la même manière que le framework d'authentification existant. Voici un processeur de contexte par exemple que j'utilise pour me permettre d'écrire {{ username }} dans mon modèle sans avoir à le sortir de chaque objet de la demande dans toutes les méthodes de vue:

def Authentication(request): 
    if AuthenticationCheck(sess=request.session, timeofaction=datetime.datetime.now(), ipaddress=request.META['REMOTE_ADDR']) == True: 
     return dict(username=request.session["username"]) 
    else: 
     return dict(username='') 

En outre, Django Middleware Documentation

+0

Merci. J'étais 100% Java avant et particulièrement apprécié en utilisant la pile JSF/Spring/Hibernate. Nous avons un système hérité qui utilise cette pile. Actuellement, nous avons des exigences pour construire un nouveau système avec beaucoup d'interface utilisateur Web/interfaces de service Web. Les exigences ne sont pas claires et continueront de changer. Je trouve que la pile de Django est beaucoup plus productive quand il s'agit de développement web que de faire de même avec les technologies Java. Le workflow avec les concepteurs de sites Web est également plus simple. – Tomas