Java/Servlets - Cookie et authentification (débutant)

Java/Servlets - Cookie et authentification (débutant) - Java - Programmation

Marsh Posté le 19-06-2008 à 17:13:04    

Bonjour,
 
J'ai une BD SQL Server sous laquelle j'ai définie des utilisateurs.
Dans mon application, je voudrai définir un système de cookies. J'aurais plusieurs questions :
 
1 => Plusieurs cookies peuvent-ils avoir le même nom ?
Car je veux définir le cookie login, et je voudrais n'avoir qu'un cookie login par utilisateur.
EDIT : il semblerait que plusieurs cookies peuvent avoir le même nom, donc il ne faut pas utiliser response.addCookie(). Dans ce cas, qu'utiliser ?
Je sais que la méthode setValue() change la valeur, mais ça change la valeur de la variable seulement ou aussi la valeur du cookie stocké ?

 
2 => Pour changer la valeur d'un cookie, est-ce que ce code est correct :
 

Code :
  1. Cookie[] cookies = request.getCookies();
  2.             FOR (int i = 0; i < cookies.length; i++) {
  3.                 Cookie monCookie = cookies[i];
  4.                 IF (monCookie.getName().equals("login" )) {
  5.                     Cookie cookieLogin = new Cookie("login", login);
  6.                     cookieLogin.setValue(login);
  7.                     cookieLogin.setMaxAge(3600);
  8.                     response.addCookie(cookieLogin);
  9.                    
  10.                 }
  11.             }


 
3 => Je voudrais que les cookies soient détruits à 12h et à 19h. Est-ce possible de faire autrement que de calculer le nombre de seconde restant jusqu'à ces heures ?
 
4 => Comment détruire un cookie ?
 
Merci de votre aide.


Message édité par Sbartacus le 19-06-2008 à 17:18:18
Reply

Marsh Posté le 19-06-2008 à 17:13:04   

Reply

Marsh Posté le 19-06-2008 à 22:56:30    

Dis moi, tu te servirais pas des cookie pour faire de la gestion de cache par hasard ?

Reply

Marsh Posté le 20-06-2008 à 11:18:21    

Non, enfin qu'est-ce que tu entends par gestion de cache ?
Je ne suis censé utiliser que 2 cookies dans toute l'application: login et password.
 
Les autres informations sont stockées en tant qu'attributs de session, et donc détruites soit durant l'appli, soit lors de la fermeture de l'appli.


Message édité par Sbartacus le 20-06-2008 à 11:18:37
Reply

Marsh Posté le 20-06-2008 à 14:49:57    

Finalement j'ai trouvé la réponse à la plupart de mes questions.
 
Je voudrais juste savoir : à chaque page de l'application, je parcours la liste des cookies (il y a 3 cookies en fait : JSESSIONID, login et password). Je regarde le login et le mot de passe sauvegardés. S'ils sont incorrects, je redirige systématiquement vers la page d'authentification.
 
Vaut-il mieux que je garde ce système, ou devrai-je récupérer les cookies et placer leur valeur dans un attribut de session ? Qu'est-ce qui se fait le + couramment ?
Merci.

Reply

Marsh Posté le 20-06-2008 à 15:22:43    

tu pourrais te mettre un filter, pour faire ça automatiquement à chaque fois, sans avoir à le coder dans tes servlets/pages.
 
peut-être que Spring pourrait t'aider à faire ça encore mieux, ou un framework AOP plus léger, ou que sais-je.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 20-06-2008 à 18:46:11    

Merci pour la réponse.
En fait pour le framework, je ne peux pas vraiment : le projet est déjà quasiment fini, et je manque de temps pour l'apprentissage de l'usage d'un framework. J'aurais du faire ça dès le début. :(

Reply

Marsh Posté le 20-06-2008 à 21:57:42    

mettre login & mot de passe dans des cookies, c'est le meilleur moyen pour se planter un clou dans le pied en cas de XSS.

Reply

Marsh Posté le 24-06-2008 à 10:49:31    

Ben en fait le site est intranet est n'est utilisé que par 4 ou 5 employés. Chacun peut connaitre le mot de passe de l'autre, ce n'est pas un soucis, d'ailleurs le mot de passe dans le cookie est visible en clair.
 
Et hormis les cookies, n'y a-t-il pas plus persistant que les attributs de session ?
Car en fait, l'authentification est valide jusqu'à midi. L'utilisateur doit ensuite se ré-identifier, et ça reste valable jusqu'à 20h.
Merci.

Reply

Sujets relatifs:

Leave a Replay

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