gestion de sessions

gestion de sessions - Java - Programmation

Marsh Posté le 04-02-2004 à 17:55:16    

Bonjour tout le monde,
 
nous realisons en ce moment une application client-serveur, ayant pour objectif la gestion d'un parc d'equipements...
nous avons donc aussi a gerer des utilisateurs avec des droits differents entre autres, mais aussi la securite.
 
notre application est developpee en Servlets, et nous utilisons Tomcat comme moteur.
 
Mais comment faire pour palier aux problèmes suivants SVP :
- comment savoir si un utilisateur est connecte (pour eviter de le modifier/supprimer pendant qu'il est connecte !) sans avoir a creer une table d'utilisateurs connectes (ou un attribut de type booleen dans la table des utilisateurs) et ainsi eviter des acces a la BDD a chaque page de l'application ?
- dans le meme contexte, comment faire pour s'assurer qu'un utilisateur sera deconnecte s'il n'a pas suivi la demarche reguliere de deconnexion (par exemple s'il change de site, ou s'il ferme son navigateur, ou en cas de coupure de courant...) ?
 
merci d'avance !

Reply

Marsh Posté le 04-02-2004 à 17:55:16   

Reply

Marsh Posté le 04-02-2004 à 18:05:23    

ben... en utilisant des sessions [:itm]
 
 
figure-toi qu'en jetant un oeil distrait a la javadoc, ne fut-ce qu'a celle concernant les classes que tu utilises déjà (au minimum 3, Servlet, ServletRequest et ServletResponse), tu trouveras la réponse.
 


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 04-02-2004 à 18:13:16    

Bon, il est possible que je n'ai rien compris, mais à ma connaissance :
1) soit tu authentifies les users via des pages sécurisées (web.xml, roles, etc.) et à ce moment là y'a pas de moyen à ma connaissance pour récupérer la liste des utilisateurs "en cours"
2) soit tu gères l'identification à la main, avec une table & co. Dans ce cas dois pouvoir savoir si quelqu'un est toujours connecté avec un bout de javascript qui va demander un reload d'un bout de ta page à intervalle régulier (c'est juste une idée comme ça, je ne sais pas si c'est réellement faisable en fait ...) et donc déclencher une servlet spéciale (un genre de "ping" donc ...).

Reply

Marsh Posté le 04-02-2004 à 18:14:40    

ygrec >> à mon avis il veut juste savoir si l'user qui appelle une servlet est authentifié, il me semble pas qu'il veuille spéciquement une liste des users en cours.
(et si c le cas, c jouable avec les listeners)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 04-02-2004 à 18:17:02    

the real --> Les Listeners, bon sang mais c'est bien sur ... :)

Reply

Marsh Posté le 04-02-2004 à 18:17:37    

;)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 04-02-2004 à 19:22:22    

merci pour les reponses ... mais apparamment, je me suis mal expliqué : j'utilise deja les sessions pour conserver un attribut de type 'utilisateur_courant' mais ce que j'aimerais c'est empêcher par exemple un utilisateur ayant des droits de type administrateur de modifier les données d'un autre utilisateur quand ce dernier est connecté, et ce sans avoir a creer une table d'utilisateurs connectés.
ensuite, je voudrais empêcher un utilisateur d'accéder a l'application sans repasser par la page de log, s'il a visite d'autres sites entre temps par exemple.
Et au cas ou il me faudrait utiliser une table d'utilisateurs connectés, comment faire pour en effacer les utilisateurs qui n'aurait pas suivi le processus de deconnexion(ie: en changeant de site, en coupant le PC ...)?

Reply

Marsh Posté le 04-02-2004 à 20:30:46    

Citation :


empêcher par exemple un utilisateur ayant des droits de type administrateur de modifier les données d'un autre utilisateur quand ce dernier est connecté, et ce sans avoir a creer une table d'utilisateurs connectés.


Comme a dit the real -- : ServletContextAttributeListener tenant à jour une liste statique (pas une table DB :ange:) des users cf 'utilisateur_courant'
 

Citation :


ensuite, je voudrais empêcher un utilisateur d'accéder a l'application sans repasser par la page de log, s'il a visite d'autres sites entre temps par exemple


Ca je sais pas trop  :??: Vu que je pense pas que tu puisses récupérer la dernière URL affichée par un browser ?
 

Citation :


comment faire pour en effacer les utilisateurs qui n'aurait pas suivi le processus de deconnexion(ie: en changeant de site, en coupant le PC ...)


Un timeout peut être ? Ca peut être un début de piste aussi pour la question précédente ?
 
Hope it helps ...
 
Edit : Y'a des choses intéressantes là :
http://java.sun.com/developer/onli [...] chen1c.pdf


Message édité par Ygrec le 04-02-2004 à 20:57:47
Reply

Marsh Posté le 04-02-2004 à 21:26:20    

Tu peux réduire le timeout de session qui est de 20 minutes par défaut ...


Message édité par benou le 04-02-2004 à 21:26:33

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 04-02-2004 à 22:32:35    

benou a écrit :

Tu peux réduire le timeout de session qui est de 20 minutes par défaut ...

C'est la seule solution simple et propre que j'ai trouvé. Le problème étant de trouver une valeur acceptable pour le timeout : trop long tu vois des utilisateurs loggués alors qu'ils sont partis, trop court ton user est obligé de se relogger même si il ne quitte pas le site.

Reply

Marsh Posté le 04-02-2004 à 22:32:35   

Reply

Marsh Posté le 05-02-2004 à 11:04:37    

Merci pour vos idées! Avec ca, on devrais arriver a peu pres a tout faire ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed