Perte de session

Bonjour,

J’ai mis en place une authentification sur le modèle de l’application
“depot” du livre “Ruby on Rails” des éditions Eyrolles. Je l’ai modifiée
pour m’authentifier sur un annuaire Active Directory en appliquant la
procédure indiquée sur la page

http://wiki.rubyonrails.com/rails/pages/ActiveDirectory

L’authentification fonctionne quelques minutes puis ensuite la variable
session[:user_id] n’est plus transmise entre les contrôleurs ‘login’ et
‘admin’. Les logs m’indiquent pourtant que l’authentification a réussi
sur l’AD. Le problème est le même sous Webrick (développement) et
Apache/Mongrel (production). Malgré quelques lectures sur le web à ce
sujet, je n’arrive pas à débloquer la situation.

Je précise que je suis sous Debian Etch, ruby 1.8 et rails 1.2.3

Bonjour,

L’authentification fonctionne quelques minutes puis ensuite la variable
session[:user_id] n’est plus transmise entre les contrôleurs ‘login’ et
‘admin’. Les logs m’indiquent pourtant que l’authentification a réussi
sur l’AD. Le problème est le même sous Webrick (développement) et
Apache/Mongrel (production). Malgré quelques lectures sur le web à ce
sujet, je n’arrive pas à débloquer la situation.

Pour débugger tu vas devoir tracer deux choses:

  • ce qu’il advient du cookie de session (par default il doit s’appeler
    _session_id ou un truc du genre

  • quel système tu utilises pour stocker les sessions et s’il persiste
    correctement. Comme tu es en rails 1.2.3 c’est Pstore par default =
    stockage en fichier dans RAILS_ROOT/tmp/sessions

Si tu veux tracer plus facilement tu peux changer de systeme de
stockage et utiliser ActiveSessionStore ou SqlSessionStore (plugin)

Il n’y a pas de “transmission” de session entre controller, une
session est lié à un cookie qui lui est lié à un navigateur point
barre, quelque soit le controller, l’OS utilisé ou le serveur web

A priori il y a de grande chance que ton problème soit coté
navigateur, soit coté code, il est peut probable que tu nettoyes les
fichiers de session sans le savoir puisque rails ne le fait pas tout
seul