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

Struts 1 Java Discussion :

Obliger l'utilisateur à passer par la page login


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Par défaut Obliger l'utilisateur à passer par la page login
    Bonjour à tous

    Je viens de réaliser une application j2ee avec struts et hibernate,
    et je suis sur le point de déployer cette application web en intranet dans une entreprise (en mode client/serveur) .

    MAIS , je me suis appreçus que le mode d'authentification ne sert absolument à rien et mon application est non sécurisée,je m'explique :

    En premier lieu j'ai une page login qui mène sur 4 pages jsp selon le statut de l'utilisateur ,et biensur si le compte saisis est erroné la page de login ne mènera null part .

    le problème que cette page de login est facilement évitable il suffit de saisir comme url :

    http://localhost:8080/Report/pagecible1.jsp

    et on accdera à la page 1 .

    Donc si quelqu'un pourrais m'aider pour comment obliger l'utilisateur de passer par la page Login au lieu de taper les URLs des pages de mon application par ci et par là .

    Merci.

  2. #2
    Membre éprouvé
    Avatar de David Gimelle
    Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2007
    Messages : 79
    Par défaut
    Bonjour,

    Ceci se configure dans le fichier web.xml. Avec la balise <security-constraint>
    Tu trouveras des infos dans le faq de developpez.com : http://java.developpez.com/faq/struts/?page=security

    David Gimelle
    Developpeur J2ee
    blog: http://getj2ee.over-blog.com

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Il y a également la possibilité de passer par un filtre qui testera la présence d'un objet en session représentant l'utilisateur authentifié.
    S'il n'existe pas -> redirection vers la page de login
    Quelque chose comme ceci
    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
    24
    25
    26
     
    package mon.package;
     
    public class ServletFilter implements Filter
    {
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
                ServletException
        {
            HttpServletRequest httpRequest = (HttpServletRequest)request;
            HttpSession session = null;
            try
            {
                session = httpRequest.getSession(false);
                if (session == null || session.getAttribute("AUTHENTIFICATION") == null)
                {
                    throw new ServletException("Aucune session active ou l'utilisateur n'est pas authentifié");
                }
                else chain.doFilter(request, response);                
            }
            catch (Exception e)
            {
                throw new ServletException(e);
            }
        }
    }
    Ensuite, il faut inscrire le filtre dans web.xml et le tour est joué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ...
    <filter>
        <filter-name>ServletFilter</filter-name>
        <filter-class>mon.package.ServletFilter</filter-class>
    </filter>
     
    <filter-mapping>
        <filter-name>ServletFilter</filter-name>
        <url-pattern>*</url-pattern>
    </filter-mapping>
    ...
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Par défaut
    Merci pour vos réponses mais j'ai deux petites questions :

    D'abord pour David Gimelle :

    J'ai déja penser à cette alternative mais je voyais pas comment l'utiliser à ma faveur ,car comment je peux réstreindre des privilèges à des utilisateurs qui sont stockés dans une base de donnnée sql aileurs, et qui peuvent etre nombreux ,comment puis-je les mettre dans un seul groupe ?? C'est la ou j'ai fais ce Post .


    Pour OButterlin :

    J'ai compris l'idée est c'est peut etre une bonne alternative ,certs j'ai quelques questions consrnat l'implémentation de cette solution .

    Est ce que je dois déclarer un attribut dans la session ,cet attribut (AUTHENTIFICATION") est à "true" quand l'utilisateur s'identifie auprès de la page login .

    Puis utiliser la valeur de cet attribut dans le filter ?

    Je crois ce qui traduit cette ligne de votre code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (session == null || session.getAttribute("AUTHENTIFICATION") == null);
    De plus comment puis-je le rediriger vers la page login.jsp ?

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Viscapon Voir le message
    ...
    J'ai compris l'idée est c'est peut etre une bonne alternative ,certs j'ai quelques questions consrnat l'implémentation de cette solution .

    Est ce que je dois déclarer un attribut dans la session ,cet attribut (AUTHENTIFICATION") est à "true" quand l'utilisateur s'identifie auprès de la page login .

    Puis utiliser la valeur de cet attribut dans le filter ?

    Je crois ce qui traduit cette ligne de votre code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (session == null || session.getAttribute("AUTHENTIFICATION") == null);
    De plus comment puis-je le rediriger vers la page login.jsp ?
    Oui, c'est l'idée.
    Dans la servlet de login, si tout est OK, tu positionnes un attribut en session sous le nom "AUTHENTIFICATION" (ici pour l'exemple).
    Tu n'as pas besoin de mettre quelque chose de bien précis, ça peut être une simple chaine de caractère ou un objet quelconque, le but est que quelque chose existe en session sous ce nom ou pas.

    Pour la redirection vers la page de login, tu peux le faire directement dans le filtre comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,            ServletException
    {
       ...
       ((HttpServletResponse)response).sendRedirect(((HttpServletRequest)request).getContextPath() + "/index.jsp");
    ...
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Par défaut
    Dans la servlet de login, si tout est OK, tu positionnes un attribut en session sous le nom "AUTHENTIFICATION"
    Excuse moi OButterlin ,mais comment puis-je implementer ceci,càd j'ai une action userLoginAction qui vérifie la validité du compte et qui fait un forword vers la page cible(1,2,3,4) .

    Donc comment je dois faire pour positionner un attribut en session dans le cas de la servlet login?

Discussions similaires

  1. imprimer sans passer par la page de dialogue
    Par fadelghani dans le forum Langage
    Réponses: 5
    Dernier message: 27/03/2015, 16h03
  2. Acceder à une page ASP.NET sans passer par la case Login
    Par ehochedez dans le forum ASP.NET
    Réponses: 8
    Dernier message: 07/10/2010, 10h28
  3. eviter de passer par la page login
    Par mchicoix dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/12/2007, 13h41
  4. Réponses: 12
    Dernier message: 22/05/2006, 06h18
  5. Réponses: 4
    Dernier message: 05/02/2004, 18h18

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