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 :

[Habilitation] méthode pour struts ?


Sujet :

Struts 1 Java

  1. #1
    Membre éclairé Avatar de phoebe
    Inscrit en
    Août 2003
    Messages
    289
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 289
    Par défaut [Habilitation] méthode pour struts ?
    Bonjour,
    j'aimerais avoir vos avis sur comment gérer les habilitations de chaque action dans une application struts.
    En fait j'utilise des DispatchAction et pour chaque action j'ai plusieurs méthodes, par exemple "ajouter", "modifier", "supprimer" et j'aimerais savoir comment gérer le fait que certains utilisateurs aient les droits de création uniquement, d'autres en création et modification et enfin d'autres avec le droit de suppression en plus.

  2. #2
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Si les methodes sont toujours nommés pareil, tu pourrais peut-etre combinée Spring à Struts. Je sais que la partie AOP (programmation orienté aspect) te permet de faire un traitement en amont ou aval des methodes. Ainsi tu pourrais checker a ce moment si l'utilisateur a le droit de faire le ajouter si oui faire l'action et dans le cas contraire envoyé un message d'erreur.

    J'espere avoir été à peu près clair et que c'est ce que tu cherchais!!

  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 phoebe,
    je ne croies pas qu'il y ait de solution miracle pour gerer ceci.
    Il faut que tu codes avant chaque appel de tes dispatchs l'appel a la fonction qui gere la notion de droit.

    Apres je ne sais pas comment est ton application, mais si tu dois rendre visible les boutons, liens, champs en fonctions des droits de l'utilisateur, j'ai cree un projet FormView qui gere entre autres l'etat des champs en fonction des roles (sans etre oblige de mettre des if partout dans tes JSP, c'est laction qui pilote l'etat de tes champs (invisble, lecture seule, lecture-ecriture,...).

    Angelo

  4. #4
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Personnellement je crée une Action pour chaque action (modifier, créer, supprimer...).

    Pour chaque Action il me reste plus qu'à contrôler les droits de l'utilisateur.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    Au niveau architecture, le mieux me semble de coder une action abstraite générique dérivant de DispatchAction, qui définit les méthodes abstraites nécessaires.
    Toutes tes actions de ce type hériteront de cette classe, ce qui te permettra, sous eclipse par exemple, de créer obligatoirement et quasi-automatiquement (via la fonction Source > Override / Implement methods) tes méthodes.
    Ca te permettra aussi, au besoin, de coder du code générique à toutes tes actions de ce type, pour par exemple controler tes droits d'accès.

  6. #6
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Citation Envoyé par mixouille
    Au niveau architecture, le mieux me semble de coder une action abstraite générique dérivant de DispatchAction, qui définit les méthodes abstraites nécessaires.
    Toutes tes actions de ce type hériteront de cette classe, ce qui te permettra, sous eclipse par exemple, de créer obligatoirement et quasi-automatiquement (via la fonction Source > Override / Implement methods) tes méthodes.
    Ca te permettra aussi, au besoin, de coder du code générique à toutes tes actions de ce type, pour par exemple controler tes droits d'accès.
    C'est cette solution que j'utilise avec les Action : Chaque Action dérive d'une Super-Action qui contient une déclaration abstraite pour une méthode de contrôle.
    Chaque Action doit donc la redéfinir mais il est possible comme variante de surcharger une méthode générique de la Super-Action.

    A+

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    Exactement

  8. #8
    Membre éclairé

    Inscrit en
    Septembre 2003
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 65
    Par défaut
    Il est aussi possible de gérer les droits d'accès en sous classant le RequestProcessor ou la classe Filter
    Il est ainsi possible de vérifier les droits de l'utilisateur avant d'exécuter l'action.

    Vous trouverez des exemples (en Anglais) à cette adresse :
    http://www.devarticles.com/c/a/Java/...pplications/5/

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    Oui, bien vu ptit-lu, après, tout dépend des besoins de phoebe (qu'on a pas revu à ce propos ...) et de la complexité de ses droits.

    Dans l'appli que je code actuellement, quasiment chaque page a des droits particuliers qui sont fonction de beaucoup de paramètres. J'ai donc créé, dans mon action générique, une méthode abstraite (qui pourrait avoir une implémentation par défaut comme suggéré par Mister Nono) que j'implémente dans toutes mes actions et qui retourne un indicateur de "niveau de droits" (dans mon cas un int, ou un item d'une enum, qui indique le niveau : pas d'accès, lecture, écriture, mais ca pourrait aussi être un boolean).

    Et, dans mon execute() générique, j'appelle cette méthode et je peux ainsi router éventuellement vers une page d'erreur, ou mettre à jour un attribut de mon form indiquant que je suis en lecture seule, etc.

  10. #10
    Membre éclairé Avatar de phoebe
    Inscrit en
    Août 2003
    Messages
    289
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 289
    Par défaut
    Bon déjà, un grand merci pour vos propositions.

    Mes méthodes ne s'appellent pas toute pareil, dans une même action je peux avoir "calculerTruc", "calculerMachin", "AjouterBibule" etc...

    je vais regarder de plus prêt ce que propose ptit-lu et azerr puis je reviendrais faire un bilan de ces deux méthodes.

    je voudrais ne pas avoir à gérer les "if" dans tous les sens dans mes jsp (comme le disait si bien azerr)

    Sinon, je suis d'accord avec Mister Nono, le mieux serait d'avoir autant d'Action que d'action (supprimer, ajouter, calculer, etc...) seulement je trouve ça beaucoup trop lourd à coder et à maintenir car les écran d'ajout et de modification sont souvent identiques...

  11. #11
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Citation Envoyé par phoebe
    Sinon, je suis d'accord avec Mister Nono, le mieux serait d'avoir autant d'Action que d'action (supprimer, ajouter, calculer, etc...) seulement je trouve ça beaucoup trop lourd à coder et à maintenir car les écran d'ajout et de modification sont souvent identiques...
    C'est vrai que le code est un peu plus long mais mais pas tant que cela en utilisant l'héritage où la surcharge des méthodes.

    Un autre avantage de cela est une approche modulaire de ton application : chaque Action ne fait qu'une tâche (elle est sous une forme atomique) et son interraction avec le reste de l'application reste très limitée. Donc tu peu très aisément et facilement utiliser une Action de ce type (ou module) dans une autre application sans changement du code source. Il y aura donc moins de tests et la réutilisation d'un code déjà validé auparavent impliquera une nouvelle application plus sûre aussi.

    Enfin dans les DispatchAction on se base sur des Labels (par exemple : nom d'un bouton submit) pour déterminer la suite à réaliser. Le soucis c'est que dans une application multilangue les Labels sont modifiés (par exemple : Nom devient Name) suivant le client et il faut gérer cela dans les DispatchAction.

    A+

  12. #12
    Membre éclairé Avatar de phoebe
    Inscrit en
    Août 2003
    Messages
    289
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 289
    Par défaut
    pour ce qui est du nom des méthodes d'un DispatchAction, il y a plusieurs façon de faire et je n'utilise pas directement le libellé du bouton donc aucun soucis de ce point de vue là

  13. #13
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    Si tu veux vraiment faire un code générique qui, à partir de la valeur d'un champ (qui stoquerait le nom de ta méthode, si j'ai bien compris), appellerait la méthode correspondante de ton action, tu peux utiliser l'introspection de java :
    http://ricky81.developpez.com/tutori...flection/#L4.2

    Cela te permettra d'appeler une méthode suivant son nom, et de lui passer les paramètres que tu veux. Tu mets tout cela dans le "execute()" d'une action générique dont dérivent tes actions, et ca devrait marcher.

    EDIT : je viens de m'apercevoir que je te proposais plus ou moins de recoder la fonction de Dispatch de Struts... . Il n'empêche que, par exemple, si tu as en base tous les noms des méthodes et les droits qui vont avec selon les utilisateurs, tu peux gérer ca come cela, à partir de la valeur de ton champ, et faire le dispatch ensuite, soit en dérivant la classe DispatchAction de Struts, soit en faisant comme je le disais, mais je ne vois plus trop l'intérêt.

    EDIT 2 : pas très clair ce post

  14. #14
    Membre éclairé Avatar de phoebe
    Inscrit en
    Août 2003
    Messages
    289
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 289
    Par défaut
    stocker les noms de méthode en base ne me parait pas terrible... il faut penser à ajouter une ligne en base dès qu'on écrit une nouvelle méthode

  15. #15
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Citation Envoyé par phoebe
    stocker les noms de méthode en base ne me parait pas terrible... il faut penser à ajouter une ligne en base dès qu'on écrit une nouvelle méthode
    Je dirais plus : PAS TERRIBLE DU TOUT !!!!

  16. #16
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    Ben, si son souhait est d'avoir des droits spécifiques pour chaque méthode, ca va être dur d'avoir quelque chose de non-dépendant du code !
    Bon, c'est vrai qu'un fichier XML de config serait plus approprié, mais à part ça, ca ne me choque pas plus que ca. Certains frameworks fonctionnent ainsi (ceux des progiciels Websphere notamment, qui ne se gènent pas pour stocker en base toute la config des actions, droits, classes, etc..., et demandent des insert en base à chaque nouvelle fonctionnalité).

  17. #17
    Membre éclairé

    Inscrit en
    Septembre 2003
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 65
    Par défaut
    Citation Envoyé par phoebe
    stocker les noms de méthode en base ne me parait pas terrible... il faut penser à ajouter une ligne en base dès qu'on écrit une nouvelle méthode
    Et les possibilités que j'ai évoqué ne te conviennent pas ?

  18. #18
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    En fait, je ne vois pas vraiment de problème sur la facon de controler l'affichage des pages et l'accès aux actions (toutes les méthodes proposées reviennent à peu près au même d'ailleurs), mais plutot sur comment configurer la chose.

    Mais on aurait besoin de quelques précisions sur les besoins exacts de phoebe.
    Si elle (il ?) doit configurer des droits particuliers pour chaque méthode/action de l'utilisateur, la solution que je proposais, à savoir configurer ca dans un fichier XML (mieux qu'en base, donc) est pour moi la meilleure. Après, pour appliquer cette configuration, on peut procéder comme tu le proposes, ptit-lu, ou comme je l'ai proposé, cela revient à peu près au même.

  19. #19
    Membre éclairé Avatar de phoebe
    Inscrit en
    Août 2003
    Messages
    289
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 289
    Par défaut
    Merci à tous pour votre participation mais je vais sans doute opter pour la proposition d'Azerr, c'est ce qui correspond le plus à mes attentes.

    Pour l'instant les habilitations ne sont pas mon soucis principal, on verra ça après.

    J'ai un autre problème sur les bras, qui va faire l'objet d'un autre post...

  20. #20
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    Ok, mais à ce que j'ai compris, la solution de azerr concernait plus le rendu HTML, qu'as-tu choisi pour la configuration des droits ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/06/2004, 11h23
  2. [C#] Une seule méthode pour plusieurs composants
    Par niPrM dans le forum Windows Forms
    Réponses: 8
    Dernier message: 01/06/2004, 14h41
  3. [SWING][THREAD]Méthodes pour afficher une Frame
    Par pompidouwa dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 05/05/2004, 10h35
  4. Meilleur outils de développement pour Struts
    Par FreeCake dans le forum EDI et Outils pour Java
    Réponses: 1
    Dernier message: 24/10/2003, 10h36
  5. Fonction/méthode pour obtenir l'IP de la machine
    Par sirex007 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 10/04/2003, 14h36

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