2010-09-19 29 views
1

Une application web écrite en Python est prévue, Django est un candidat principal en tant que framework.Django et cartes d'accès communes (CAC)

Une exigence est l'accès CAC, sans la nécessité de saisir le nom d'utilisateur et mot de passe. D'après ce que je peux dire, l'accès au CAC ne fait pas partie des "batteries" incluses avec Django.

En tant que structure monolithique (pas nécessairement un mauvais attribut), Django a une réputation de maintenance élevée une fois que vous avez modifié le noyau. Puis-je facilement ajouter l'accès CAC à un site Django? Peut-il être facilement maintenu par la suite? Ou peut-être devrions-nous envisager un framework Python différent?

Pour votre information .. présentation intéressante sur l'accès CAC link

+0

Avez-vous réussi à obtenir ce fonctionnement? Je cherche une solution. –

Répondre

1

Vous n'avez pas besoin de modifier le cœur pour l'activer. Django prend en charge les backends d'authentification tiers et ils sont assez faciles à écrire. Il vous suffit de prendre en charge deux méthodes: get_user et authenticate. Donc, votre implémentation a juste besoin d'effectuer ces opérations en utilisant votre interface CAC, et tout fonctionnera comme d'habitude. Pour plus de détails, voir the documentation.

Édité après d'autres réponses Je ne sais pas pourquoi les gens disent que c'est difficile dans Django. Oui, de nombreuses parties de Django sont difficiles à personnaliser. Mais c'est une partie particulière qui est faite très facile. J'ai écrit plusieurs backends d'authentification dans Django et ils sont non seulement très simples, mais ils "fonctionnent" avec le reste du framework, y compris l'admin. Il n'y a aucun besoin de modifier quoi que ce soit d'autre pour que cela fonctionne.

+0

Merci Dan. Je vais donner un coup de feu et espérer pour le "et tout va fonctionner comme d'habitude." – Paulb

0

L'extension contrib.auth est une douleur dans le cou. C'est la pire chose du django. Si vous avez besoin d'un backend auth hautement personnalisé, je suggérerais d'utiliser un framework différent.

0

Je viens de le faire aujourd'hui en sous-classant django.contrib.auth.middleware.RemoteUserMiddleware et changé la propriété de l'en-tête à celle que j'avais définie dans ma conf. Apache. Je viens d'ajouter le django.contrib.auth.backends.RemoteUserBackend et mon middleware aux paramètres et cela fonctionne parfaitement.