IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Servlet cible --> login --> retour à la servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 22
    Points
    22
    Par défaut Servlet cible --> login --> retour à la servlet
    Bonjour,

    J'ai des servlets avec une validation de connexion au site avant d'effectuer le traitement. Ainsi, si un usager tente d'accéder à la servlet /Exemple1?Param1=mavaleur directement sans s'être connecté préalablement, une redirection est effectuée à la servlet /Login. Je veux qu'après la connexion, ce soit la bonne servlet demandée qui soit affichée (dans ce cas-ci, /Exemple1 et avec paramètres "Param1=mavaleur").

    Ce que j'ai fait dans doGet():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Object classeReq = request.getAttribute("javax.servlet.forward.servlet_path");
    if (classeReq != null) _classeReq = (String)classeReq;
      else _classeReq = "/ServletParDefaut";
     
    String params = request.getQueryString();
    if (params != null) _params = params;
      else _params = "";
    _classeReq et _params étant des variables private de ma classe Login.
    Un problème survient si deux usagers tente d'accéder au site en même temps alors qu'ils ne sont pas connectés. Il s'agit de la même variable, donc pas thread safe... et ça cause le problème que les deux usagers vont accéder à la même page après un login simultanné (soit la servlet demandée par le dernier usager). Bref, l'utilisation de la variable private n'est pas l'idéal... Sauf que je ne sais pas où stocker ces paramètres. Le scope request n'est pas possible puisque l'opération s'effectue en deux étapes (doGet: lecture de la page, doPost: submit du login/pass)... Et le scope session n'est pas possible non plus puisque je ne suis pas encore loggué. Le request.getSession(); s'effectue dans le doPost(). Que faire???

    Merci de votre aide!

  2. #2
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Bonjour,

    A priori, si tu veux gérer l'authentification directement au niveau de Tomcat, tu as déjà le nécessaire pour cà. Une petite recherche te donnera pleins de pages d'infos sur j_securitycheck qui te permet de gérer l'authentification et même l'autorisation d'accès directement en modifiant ton fichier server.xml.

    Ensuite, si tu veux le faire à la main, théoriquement tu pourrais procéder comme ceci (je te dis cà à la volée, j'ai pas testé) :
    - Recupérer les infos sur la requête reçue avec si je ne me trompe getRemoteAddr()
    - Gerer une HashTable des IP
    - Si un client a déjà son IP dans la table, alors c'est pas sa première requête etc..

    Je te l'accorde, c'est un peu "bourrin" comme méthode, à tête reposée, tu trouveras sans doute mieux...

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 22
    Points
    22
    Par défaut
    En fait, je n'ai pas de problème d'identification. Toutes mes servlets extends la servlet /Main qui elle a une méthode verifierConnexion(request, response)... Je vérifie la connexion à cet endroit. Si l'usager est identifié, j'exécute la méthode abstraite execute(request, response)... Ce sont donc les enfants qui sont appelés ou, s'il y a lieu, je forward à /Login! Ça fonctionne bien.

    Le vrai problème consiste à savoir où stocker des données alors que le client n'est pas encore connecté. Dans mon cas, le scope request n'est pas possible car j'effectue les opérations en deux étapes, le scope session n'existe pas encore car la connexion n'est pas encore établit et le scope application, ce n'est pas l'idéal puisque c'est multi-usagers.

    Mais j'ai contourné mon problème en y plaçant des variables hidden dans le formulaire de la form Login!
    Merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Servlet]Récupérer une entete HTTP via un servlet
    Par sopata dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 20/12/2005, 18h09
  2. [SERVLET]envoi multiple d'img d'une servlet vers une JApplet
    Par reno.rkcrew dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 17/09/2005, 16h55
  3. [SERVLET][JSP] Ecriture de fichier par la servlet
    Par Jabwoo dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 15/07/2004, 17h57
  4. [Servlet][Compilation] Erreur de compil dans code servlet
    Par gandalf_le_blanc dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 13/05/2004, 10h17
  5. [servlet][api][download] Où trouver la lib servlet.jar ?
    Par cpr0 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 03/02/2004, 21h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo