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

Développement Web en Java Discussion :

Mais ou est l'url originel


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Par défaut Mais ou est l'url originel
    Bonjour a tous ,

    Le sujet a surement du être traité, mais je ne trouve pas de réponse.
    J'ai un serveur (glassfish) avec une authentification via formulaire.
    Lorsque je tape l'url http://blabla.com/backoffice/url_bidon, j'arrive sur la page http://blabla.com/backoffice/login/, mais l'url du navigateur ne change pas, ce qui me fait penser à un forward ou un include de servlet.

    J'aimerai récupérer l'url d'origine pour, une fois l'authentification fait, rediriger vers l'url originel.

    Déjà, est-ce possible ?
    Si oui, comment faire ?
    Sinon, il y a-t-il une "astuce" pour faire ceci ?


    Merci a tous

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par Mr_Glopinous Voir le message
    une authentification via formulaire.
    configurée dans le web.xml ou gérée à la main?
    Lorsque je tape l'url http://blabla.com/backoffice/url_bidon, j'arrive sur la page http://blabla.com/backoffice/login/, mais l'url du navigateur ne change pas, ce qui me fait penser à un forward ou un include de servlet.
    JE suppose que tu veux plutot dire: lorsque je tape http://blabla.com/backoffice/url_bidon, j'ai le contenu de la servlet /login qui s'affiche ?

    J'aimerai récupérer l'url d'origine pour, une fois l'authentification fait, rediriger vers l'url originel.
    Si vous êtes toujours dans la meme requete, cette information devrait se trouver dans HttpServletRequest.getServletPath()
    Vous avez aussi getRequestURI()

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Par défaut
    Merci pour la reponse

    Citation Envoyé par tchize_
    configurée dans le web.xml ou gérée à la main?
    La gestion de la connexion est fait grâce un realm avec une configuration dans le web.xml
    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
    17
    18
    19
    20
    21
    22
    23
            <security-constraint>
                    <display-name>backoffice</display-name>
                    <web-resource-collection>
                            <web-resource-name>backoffice</web-resource-name>
                            <description>BackOffice</description>
                            <url-pattern>/backoffice/*</url-pattern>
                    </web-resource-collection>
                    <auth-constraint>
                            <role-name>admin</role-name>
                    </auth-constraint>
            </security-constraint>
            <login-config>
                    <auth-method>FORM</auth-method>
                    <realm-name>backoffice</realm-name>
                    <form-login-config>
                            <form-login-page>/backoffice/login/</form-login-page>
                            <form-error-page>/backoffice/error/</form-error-page>
                    </form-login-config>
            </login-config>
            <security-role>
                    <description>admin</description>
                    <role-name>admin</role-name>
            </security-role>
    Citation Envoyé par tchize_
    JE suppose que tu veux plutot dire: lorsque je tape http://blabla.com/backoffice/url_bidon, j'ai le contenu de la servlet /login qui s'affiche ?
    Exactement

    Citation Envoyé par tchize_
    Si vous êtes toujours dans la meme requete, cette information devrait se trouver dans HttpServletRequest.getServletPath()
    Vous avez aussi getRequestURI()
    Je suis dans un ManagedBean JSF et lorsque j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FacesContext currentContext = FacesContext.getCurrentInstance();
    HttpServletRequest request = (HttpServletRequest)currentContext.getExternalContext().getRequest();
    Avec resquest.getServletPath(), j'obtiens "/login" (de tête), alors que j'espérer obtenir
    Je vérifierai demain

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Si vous utilisez le form login, vous n'avez pas besoin de faire ça, le serveur le fait déjà de bout en bout.

    Vous arrivez sur /machin
    le serveur détermine que vous devez vous logguer. Il mémorise votre requete et vous affiche le forumulaire de login
    vous soumettez le formulaire
    le serveur valide et reprend la première requete.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Par défaut
    Merci pour la reponse

    J'utilise une page JSF pour faire l'authentification (et non l'action j_security_check avec j_username et j_password)

    J'utilise la vue suivante pour faire l'authentification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <h:form>
    <h:inputText id="login" value="#{userModerator.login}" required="true" requiredMessage="Login ne peut être vide"/>
    <h:inputSecret id="password" value="#{userModerator.password}" required="true" requiredMessage="Le mot de passe ne peut être vide"/>
    <h:commandButton action="#{authManaged.doLogin}" value="Se connecter"/>
    </h:form>
    La méthode doLogin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    		FacesContext currentContext = FacesContext.getCurrentInstance();
    		HttpServletRequest request = (HttpServletRequest)currentContext.getExternalContext().getRequest();
    		try {
    			request.login(login, password);
    			return "/backoffice/index.xhtml";
    		} catch (ServletException ex) {
    			currentContext.addMessage("title", new FacesMessage(FacesMessage.SEVERITY_ERROR, "title", "Connection Impossible"));
    			currentContext.addMessage("message", new FacesMessage(FacesMessage.SEVERITY_ERROR, "message", "La connection avec le login \"" + getLogin() + "\" semble impossible"));
    			return "/backoffice/error.xhtml";
    		}
    J'ai testé avec j_security_check avec j_username et j_password et effectivement le serveur redirige bien .

    Cependant 2 questions me taquinent
    1) Puis-je utilisé un formulaire JSF avec redirection vers la page d'origine une fois le login effectué avec succées ?
    2) De manière plus général, comment récupérer l'url d'origine lors d'un forward de servlet ?

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    si c'est un forward, HttpServletRequest contient toutes les informations. Si c'est un redirect, c'est avant le redirect qu'il faut enregistrer cette information. Donc tout dépend de ce que vous faites quand vous remarquez qu'il faut se logguer.

Discussions similaires

  1. [URL Rewriting] mais où est ma variable ?
    Par Invité dans le forum Apache
    Réponses: 3
    Dernier message: 01/08/2007, 10h45
  2. mais où est pg_hba.conf ??
    Par punky_brooster dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 10/01/2005, 23h08
  3. Mais quel est l'intérêt de XML ?
    Par darkbauer dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 01/06/2004, 18h03
  4. [VC++ .NET] mais où est passée SignedXML ???
    Par benoitB dans le forum MFC
    Réponses: 4
    Dernier message: 30/04/2004, 08h14
  5. Une table qui existe mais qui est inconnu! ?
    Par Nino dans le forum InterBase
    Réponses: 6
    Dernier message: 13/06/2003, 11h47

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