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 :

gestion des Authorization (Filter ou RequestProcessor ?)


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 22
    Par défaut gestion des Authorization (Filter ou RequestProcessor ?)
    Bonjour,

    Je développe une application Struts 1.2.9 et je souhaiterai implémenter un mécanisme d'authentification et de gestion des autorisations.

    J'ai une action qui permet aux utilisateurs de s'authentifier avec leur login/mot de passe.

    Pour gérer les autorisations dans l'application quelle solution est la meilleure d'après vous et pourquoi :
    - Implémenter un ServletFilter déclaré dans le Web.xml et chargé de vérifier que le user est bien connecté
    - Etendre le TilesRequestProcessor de Struts et redéfinir sa méthode isUserConnected()

    Merci pour vos réponse.

  2. #2
    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
    Les 2 fonctionneront, mais j'ai une préférence pour le filtre en positionnant correctement l'attribut <url-pattern>.

    Sinon, on peut également créer une classe abstraite étendant Action ou DispatchAction ou LookupDispatchAction et faire le traitement dans la méthode execute.
    Ensuite, il suffit de faire étendre tes actions de cette classe et ça fonctionnera.
    L'avantage de cette méthode réside dans le fait que tu vas centraliser des traitements communs à toutes tes requêtes (comme par exemple l'enregistrement de la sortie dans une pile, l'acquisition et la libération de ressources etc...)
    Voici un exemple (DispatchAction) :
    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
    27
    28
    29
    30
    31
    32
    33
    34
     
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
            throws Exception
    {
        long debut = System.currentTimeMillis();
        String parameterName = null;
        String methodName = null;
     
        try
        {
            if ( request.getUserPrincipal() == null ) throw new Exception("Not authenticated");
     
            parameterName = mapping.getParameter();
            if (parameterName == null) throw new IllegalArgumentException("illegal parameter");
     
            methodName = request.getParameter(parameterName);
            if (methodName != null && ("execute".equals(methodName) || "perform".equals(methodName))) throw new IllegalArgumentException("illegal parameter");
     
            forward = super.execute(mapping, form, request, response);
     
            registerOutput(mapping, form, request, response, methodName);
        }
        catch (Throwable t)
        {
            logger.error(t.toString()); 
            request.setAttribute("EXCEPTION_MESSAGE", t.toString());
            forward = mapping.findForward(FORWARD_ERROR);
        }
     
        request.setAttribute("EXECUTION_TIME", new Long(System.currentTimeMillis() - debut).toString());
     
        return forward;
    }
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonjour

    En ce qui me concerne, je gere la securite dans le RequestProcessor. Le RequestProcessor est le point d'entree d'une application Struts. Le RequestProcessor est appele avant Action, DispatchAction, LookupDispatchAction donc je pense qu'il vaut mieux faire le traitement dans le RequestProcessor. Ca evite par exemple l'etape de population du formulaire (voir les etapes du RequestProcessor) ...avant d'appeler l'action.

    Concernant le ServletFilter, ca peut se faire aussi comme ca, mais personnelement je prefere avoir un point d'entree unique (RequestProcessor) dans mon application et pas a avoir a gerer 2 classes.

    Je profite d'ailleurs du RequestProcessor pour mettre dans une ThreadLocale le user en HTTP session, ce qui permet ensuite d'acceder a l'utilisateur sans avoir le contexte HTTP session.

    Angelo

  4. #4
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 22
    Par défaut
    Merci pour vos réponses !

    Finalement j'ai choisit d'utiliser un Servlet Filter qui me permet de vérifier que l'utilisateur est connecté que pour certaines URL requétées.

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

Discussions similaires

  1. "Document.body.filters" dans la gestion des PNG sur IE6
    Par neilaur dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/09/2011, 10h35
  2. Gestion des filters Maven sous Eclipse
    Par tripless dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 31/05/2011, 09h14
  3. Gestion des variables - mémoire ?
    Par RIVOLLET dans le forum Langage
    Réponses: 4
    Dernier message: 26/10/2002, 12h44
  4. Réponses: 4
    Dernier message: 04/07/2002, 12h31
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

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