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 :

LTPA customiser les messages d'erreur de login avec "j_security_check"


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut LTPA customiser les messages d'erreur de login avec "j_security_check"
    Hello les gens,
    J'aurais souhaité savoir par quel moyen il est possible d'afficher les erreurs se produisant lors du login d'un utilisateur (typiquement "nom d'utilisateur incorrect", "mot de passe incorrect" etc...)
    En partie mon web.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <login-config>
    		<auth-method>FORM</auth-method>
    		<form-login-config>
    			<form-login-page>/login.jsp</form-login-page>
    			<form-error-page>/login.jsp</form-error-page>
    		</form-login-config>
    	</login-config>
    En partie la login.jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <FORM id="LoginForm" METHOD=POST ACTION="j_security_check"><font
    	size="1"> <strong> <bean:message key="page.user.login.enterCredentials" /></strong></font>
    <BR>
    <BR>
    <font size="1"><strong><bean:message key="page.user.login.Id" /></strong>
    <input id="userNameInput" type="text" size="12" name="j_username"></font>
    <font size="1"><strong><bean:message key="page.user.login.pwd" /></strong>
    <input type="password" size="12" name="j_password"></font> <BR>
    <font size="1"> <strong><bean:message key="page.user.login.connect" />
    </strong></font> <html:img styleClass="vertAlign"
    	src="/FacturationWeb/images/demiCercleGauche.png" /><a tabindex="0"
    	onmouseover="this.style.color='orange';"
    	onmouseout="this.style.color='white';" class="submitButtonLogin"
    	onclick="LoginForm.submit();return false"><bean:message
    	key="page.user.login.enter" /></a><html:img styleClass="vertAlign"
    	src="/FacturationWeb/images/demiCercleDroit.png" /></form>
    Quelqu'un propose une solution consistant à intércepter les erreurs en définissant une page d'erreur liée à l'erreur 401 mais qu'il qualifie "de son propre aveux" comme étend inadaptée
    Merci pour toutes vos contributions.

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 241
    Par défaut
    Bonjour,

    si on se reporte à la specification servlet 2.4, je trouve les informations suivantes:
    • SRV.12.5.3 Form Based Authentication:
      5. If authentication fails, the error page is returned using either a forward or a redirect,
      and the status code of the response is set to 200.
      The error page sent to a user that is not authenticated contains information
      about the failure.
    • SRV.9.9.1 Request Attributes
      - les attributs de requêtes suivants doivent être positionnés:
      javax.servlet.error.status_code java.lang.Integer
      javax.servlet.error.exception_type java.lang.Class
      javax.servlet.error.message java.lang.String
      javax.servlet.error.exception java.lang.Throwable
      javax.servlet.error.request_uri java.lang.String
      javax.servlet.error.servlet_name java.lang.String


    En s'appuyant sur ces points, je t'invite à vérifier en début de JSP si ces attributs sont bien présents.

    Bon test,

    Sébastien

  3. #3
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    System.out.println(request.getAttribute("javax.servlet.error.status_code"));
    System.out.println(request.getAttribute("javax.servlet.error.exception_type"));
    System.out.println(request.getAttribute("javax.servlet.error.message"));
    System.out.println(request.getAttribute("javax.servlet.error.exception"));
    System.out.println(request.getAttribute("javax.servlet.error.request_uri"));
    System.out.println(request.getAttribute("javax.servlet.error.servlet_name"));
    Sont malheureusement tous à null

  4. #4
    Membre expérimenté Avatar de DarkMolo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Maroc

    Informations forums :
    Inscription : Juillet 2006
    Messages : 207
    Par défaut
    Salut,

    Perso, je fais comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <login-config>
    	<auth-method>FORM</auth-method>
    	<form-login-config>
    		<form-login-page>/login.jsp</form-login-page>
    		<form-error-page>/login_error.jsp</form-error-page>
    	</form-login-config>
    </login-config>
    login_error.jsp ne faisant rien de plus que rediriger vers login.jsp, en passant un paramètre de plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <jsp:forward page="login.jsp">
    	<jsp:param value="true" name="loginError"/>
    </jsp:forward>
    Après sur le login, je joue sur la présence ou l'absence de ce paramètre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <c:if test="${not empty param.loginError}">
      Le user ou/et le mot de passe sont erronés
    </c:if>

  5. #5
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut
    en passant un paramètre de plus :
    ok mais ça ne te renseigne pas sur ce qui c'est réelement passé

  6. #6
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut
    j'ai essayé de faire pareil:
    sur loginError.jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <logic:redirect page="/login.jsp">
    <html:param name="<%=ConstantsToto.HTTP_SERVLET_ERROR_LOGIN%>" value="true"/>
    </logic:redirect>
    sur login.jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <logic:present name="<%=ConstantsToto.HTTP_SERVLET_ERROR_LOGIN%>">
    			<layout:message key="Utilisateur et/ou mot de passe incorrect(s)"/>
    		</logic:present>
    Seulement le paramètre n'est visiblement jamais présent dans la requête

Discussions similaires

  1. Les messages d'erreur sur un Login
    Par zooffy dans le forum ASP.NET
    Réponses: 12
    Dernier message: 18/01/2008, 13h55
  2. Rediriger les messages d'erreur
    Par goblin dans le forum Langage
    Réponses: 3
    Dernier message: 25/12/2005, 20h04
  3. Réponses: 5
    Dernier message: 16/08/2005, 12h15
  4. [Message d'erreur] gérer les message d'erreurs
    Par heid dans le forum Langage
    Réponses: 2
    Dernier message: 12/10/2004, 14h57
  5. recuperer les messages d'erreurs de interbase
    Par devalender dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/06/2004, 11h45

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