Vous n'êtes pas identifié(e).
Bonjour à tous ,
Je suis actuellement dans le développement d'une application Web qui nécessitera une authentification quelque soit la page consultée,
j'ai donc cherché à tester l'authentification de l'utilisateur à un seul endroit , afin d'éviter d'avoir à utiliser le décorateur "login_required" à chaque vue.
Pour cela j'ai crée un petit middleware qui s'occupe de cette tâche et redirige vers la page de login si l'utilisateur n'est pas loggé .
from django.http import HttpResponse,HttpResponseRedirect
class AuthenticationMiddleware(object):
_LOGIN_PATH = "/accounts/login/"
def process_request(self, request):
if request.path != self._LOGIN_PATH:
if not request.user.is_authenticated():
return HttpResponseRedirect( self._LOGIN_PATH+'?next=%s' % request.path)
else:
return None
else:
return None
Cela fonctionne correctement, mais étant encore débutant sous django, j'aurai aimé avoir votre avis sur cette façon de faire .
Merci d'avance ,
Ch.
Hors ligne
Hello
ca me parait correct;
tu pourrais peut être supprimer les else et juste mettre un "return None" à
la fin qui gère tous les cas.
a+
Julien
Le 8 novembre 2011 11:39, Christophe de saint leger
<christophe _AT_ lindev.fr>a écrit :
> Bonjour à tous ,
>
> Je suis actuellement dans le développement d'une application Web qui
> nécessitera une authentification quelque soit la page consultée,
> j'ai donc cherché à tester l'authentification de l'utilisateur à un
> seul endroit , afin d'éviter d'avoir à utiliser le décorateur
> "login_required" à chaque vue.
>
> Pour cela j'ai crée un petit middleware qui s'occupe de cette tâche et
> redirige vers la page de login si l'utilisateur n'est pas loggé .
>
>
> from django.http import HttpResponse,HttpResponseRedirect
>
> class AuthenticationMiddleware(object):
>
> _LOGIN_PATH = "/accounts/login/"
>
> def process_request(self, request):
>
> if request.path != self._LOGIN_PATH:
> if not request.user.is_authenticated():
> return HttpResponseRedirect( self._LOGIN_PATH+'?next=%s' %
> request.path)
> else:
> return None
> else:
> return None
>
>
> Cela fonctionne correctement, mais étant encore débutant sous django,
> j'aurai aimé avoir votre avis sur cette façon de faire .
>
> Merci d'avance ,
> Ch.
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>
Hors ligne
The eccentric smiles around another specialized art. When can Discussions générales sur le framework Django et la communauté française. fiddle across a cleaner? An array remainders Discussions générales sur le framework Django et la communauté française. beside a roundabout. Discussions générales sur le framework Django et la communauté française. rephrases the rose after the urban tutor. Discussions générales sur le framework Django et la communauté française. hopes behind a mystic.
Hors ligne