19 juin 2006

Sessions et contextes de navigation

Tout d'abord, les sessions doivent être multi-serveurs.

Bonjour la contrainte technique !

Toute la gestion des sessions doit pouvoir se faire en callback, par l'intermédiaire de services Web. Les timeouts sont multi-serveurs, les authentifications-zet-identifications sont multi-serveurs, les purges sont multi-serveurs.
On en arrive au final à implémenter la gestion des sessions à la mimine.

Chaque serveur front-end a son identifiant public de session (un hash sur 32 caractères, passé en paramètre HTTP «?session=» dans les URLs, avec un jour l'utilisation de cookies), mais des «rapprochements» se font depuis le serveur centralisé back-end.


Ensuite, on implémente les contextes de navigation.

En deux mots, il s'agit de permettre le multi-fenêtrage, ou plus simplement de repérer si l'utilisateur fait du multi-fenêtrage. Il y a en particulier un impact sur les paginations de listes.

Ainsi, si l'utilisateur affiche une liste paginée de messages dans la fenêtre #1, navigue un peu dedans, charge la même liste dans la fenêtre #2, y fait «Refresh» pour récupérer les nouveaux messages, puis revient à la fenêtre #1, s'il reprend sa navigation dans la fenêtre #1 on doit au moins lui dire «Désolé, le contexte a changé, la liste a été rafraîchie» et on le repositionne d'office en première page.

Pour certaines listes, on permet au contraire les deux navigations simultanées, en gérant les deux listes. Par exemple, lorsque les fenêtres #1 et #2 affichent des résultats de recherches : il ne faut pas que la fenêtre #1 soit rafraîchie avec les données de la fenêtre #2. L'intérêt de l'utilisateur était peut-être, justement, de comparer les deux listes de résultats.

Accessoirement, le Back&Reload sera géré avec une notion proche du contexte de navigation. Il devrait simplement y avoir en sus un timeout en clair dans les identifiants publics de formulaires.

Les identifiants publics des contextes de navigation sont des hash de 32 caractères, passés en paramètre HTTP «?context=» dans les URLs.
Note : impossible d'utiliser les cookies pour cette notion, puisqu'elle dépend de la page affichée, et non de la session.

Aucun commentaire: