Forum Programmation.java Question à 100 001 euros

Posté par  (site web personnel) .
Étiquettes : aucune
0
28
déc.
2004
Bonjour,

2 heures que je me prends la tête sur un fichu truc en java.

L'idée est pourtant très simple. J'ai une page login.jsp, qui balance le formulaire d'autentification a une servlet CheckLogin, si ce formulaire est bien saisi, alors CheckLogin créé une variable de session de type User, et charge index.jsp

Au chargement d'index.jsp, j'ai un include chargant la servlet VerifLogin, dont le rôle est de verifier la présence du bean User dans la session, et si elle ne le trouve pas, elle en déduit que la personne n'est pas autentifiée, et n'a donc pas le droit de voir index.jsp, hop on met une erreur
Seulement voilà, rien n'y fait, quand j'accède une 1ere fois à index.jsp j'ai le message m'indiqaunt que j'suis pas loggé donc pas le droit de rentrer, et si j'y retourne une seconde fois, cette fois index.jsp s'affiche !! j'ai fais des traces de partout, et c'est certain, un bean User est créé a un moment donné, et il fausse mon test, mais je ne sais pas où !!!

Voilà le code de mes servlets/jsp incriminées :

verifUser.java

public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
User plop = null;

plop= (User) req.getSession(false).getAttribute("user");
if ( plop == null){
System.out.println("in");
getServletContext().getRequestDispatcher("/denied").forward(req,resp);
return;
}
System.out.println(plop);
}


index.jsp

<jsp:include page="/verifUser"/>
<jsp:useBean id="user" class="beans.User" type="beans.User" scope="session"></jsp:useBean>

Bienvenue <jsp:getProperty name="user" property="login" /> !

bla bla bla...


Voilà, a aucun moment je ne fais appel a getSession().setAttribute, donc je en vois pas pourquoi ma variable plop devient non-null au 2ème passage !!


Merci énoooormément pour votre aide
  • # Hmmm

    Posté par  (site web personnel) . Évalué à 1.

    Ca ne va pas vraiment repondre a ta question mais pourquoi ne pas utiliser les outils J2EE pour l'authentification.

    Cela consiste a proteger des zones, si l'objet Principal en session ne renvoit pas le bon role, alors l'uilisateur est renvoyé via j_security_check vers la page adequate. Il faut donc definir des realms, et tout les zoes protegees dans le web.xml.

    Je n'ai pas d'url a proposer, dsl, mais je suis sûr qu'une ame charitable ou Google en dernier recours pourraient te trouver ca :-)

    Sinon j'ai pas vu d'erreurs flagrantes dans ton code.
    • [^] # Re: Hmmm

      Posté par  (site web personnel) . Évalué à 0.

      Oui je sais qu'il existe surement une pléthore de manière différentes de faire ce que je veux faire, mais ca me tue de voir que mon code trop con ne marche pas !! :-(

      C'est une sorte de fierté personnelle, quand ca ne marche pas alors que "ca devrait", c'est plus fort que moi....
  • # 2 heures

    Posté par  . Évalué à 1.

    2 heures ce n'est pas beaucoup . Cherche plus que ca avant de venir sur un forum
  • # sessionId ?

    Posté par  . Évalué à 1.

    Peut être faudrait il passer explicitement le sessionId, le cookie n'étant peut être pas présent. Vérifie que le sessionId ds le JSP est le même que ds la servlet.
  • # C'est bon

    Posté par  (site web personnel) . Évalué à 3.

    Bon laissez tomber j'ai trouvé...
    C'est tellement con que j'ose pas y croire...

    En fait le jsp:useBean instancie un objet. Dans mes phases de débuggages j'lavais mis en commentaire pour voir si c'etait lui, et j'en avais déduit que non, mais en fait, les commentaires html sont ignorés par java, donc le code s'executait toujours...

    bref....


    Merci quand même pour votre aide

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.