Django-fr

Forum

#1 06-07-2012 17:14:40

frague
Membre
Inscription : 29-11-2010
Messages : 24

Deconnexions intempestives

Bonjour à tous,

Je suis en train de développer une application de consultation de données qui arrivent sur CD, afin d'améliorer leur consultation et d'automatiser leur import dans une base mysql.
J'ai déjà développé plusieurs applications avec django, mais là je sèche...

Lors de l'affichage de certaines pages (mais pas toutes), l'utilisateur est déconnecté de façon intempestive, et redirigé vers la page de login, sans que je n'ai rien demandé... c'est très pénible, et je ne trouve pas la raison de ces déconnexions.

Je n'ai pas ce problèmes avec mes autre application, qui partagent toutes plus ou moins la même structure, et les même paradigmes de programmation.
J'ai essayé de déboguer pas-à-pas, mais je n'arrive pas à mettre le doigt sur le problème.

Mon développement est basé sur django 1.3.1, j'utilise les modules django-registration, south, django-extensions, django-debug_toolbar (pour le dev), plus quelques bricoles.
Le problème de déconnexion se produit sur le serveur interne de développement, sur werkzeug (via runser_plus) et en prod sur un serveur apache2 + mod_wsgi

J'utilise massivement des class based views, et place mes règles de sécurité dans le(s) fichier(s) urls :

Ex:

url_patterns = patterns(...
    url(r'^mon_truc/$', 
         login_required()(views.MonTrucListView.asView(), 
         name='monapp_montruc_list'),
 url(r'^mon_truc0/<P?pk>/Modifier/$', 
         login_required()(views.MonTrucUpdateView.asView(), 
         name='monapp_montruc_update),

)

Merci de votre aide !
Cordialement,


frague

Hors ligne

#2 06-07-2012 17:40:03

David Thenon
Membre
Inscription : 11-08-2010
Messages : 156
Site Web

Re : Deconnexions intempestives

Salut,

La "déconnexion" aka la perte de session utilisateur passe par le système de
session qui relie lui même principalement sur les cookies (enfin avec une config
par défaut, tu peux effectivement stocker tes sessions en BDD, fichiers, etc..
aussi).

Donc le temps de vie de tes sessions peut jouer, si l'utilisateur glande plus
de 30 minutes entre chaque activité sur le site et que tes sessions ne dure
que 30min, il perd sa session et donc se fait "déconnecter".

Maintenant si tu a déjà vérifié ce système, je doute que ça proviennent des
apps que tu utilises, je connais pas django-extensions, mais rare sont les app
qui jouent avec les session/login au point de les "fusiller". Un des plugins à
la debugtoolbar le fait mais je doute que tu actives la debugtoolbar en
production.

À mon avis de toute façon je pense que tu dois te concentrer à chercher autour
des sessions/cookies, qu'à tu déja vérifier la dessus ?

Hors ligne

#3 07-07-2012 10:53:41

frague
Membre
Inscription : 29-11-2010
Messages : 24

Re : Deconnexions intempestives

Bonjour,

J'ai essayé de déboguer pas-à-pas la création des WSGIRequest, qui sont, je pense, le point d'entrée des requête dans l'application. Lors de la vérification de session, l'utilisateur identifié par la session est AnonymousUser, alors que j'ai bien un utilisateur connecté dans la page.
Il faut que je vérisie le csrf_token dans le template, ce que je n'ai pas encore fait.
Les temps de sessions sont OK, la déconnexion à la femeture du navigateur est désactivée. Je ne suis pas devant ma machine de dev, là, j'en dirai plus lundi...

Merci !
frague
Bon week-end !
frague


frague

Hors ligne

#4 07-07-2012 14:13:36

David Thenon
Membre
Inscription : 11-08-2010
Messages : 156
Site Web

Re : Deconnexions intempestives

CSRF n'a rien avoir avec ton problème, à part si tu l'utilises explicitement
d'une façon très très particulière, il n'agit qu'à la soumission (enfin à la
réception pour être précis) d'un formulaire et à ma connaissance, même en cas
d'erreur il n'a aucun impact direct sur une session.

De même, je doute qu'il soit utile de chercher aussi "bas" que WSGI, en
théorie le problème doit se présenter au niveau de Django ou de ta webapp.
Dans le doute, fait une recherche sur google/stackoverflow au cas où il
existerait un bug exotique auquel tu ferais face.

Hors ligne

#5 09-07-2012 19:25:20

frague
Membre
Inscription : 29-11-2010
Messages : 24

Re : Deconnexions intempestives

Bonsoir à tous,

J'ai trouvé ! Le problème venait de tentatives d'enregistrer des objets 'un peu gros' dans la session, qui la fait planter silencieusement, et donc provoque la déconnexion de l'utilisateur. Je pense qu'il faudrait avertir les devs de django du soucis smile, afin d'avoir une exception là dessus dans les logs par exemple.

J'ai désactivé l'insertions de mes trucs 'un peu gros' (des stats pré-calculées pour générer du csv) et je vais juste stocker la requête.

Bonne soirée et merci encore de votre aide.

frague


frague

Hors ligne

Pied de page des forums