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 :

Identification avec redirection


Sujet :

Struts 1 Java

  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 50
    Par défaut Identification avec redirection
    Bonjour à tous.

    J'ai un petit souci et je n'arrive pas à trouver une solution propre à mon problème.

    Je développe une application web avec Struts / Hibernate / Tomcat qui sera un site de vente en ligne.
    J'ai besoin que dans certains cas, pour accéder à certaines pages, l'utilisateur soit authentifié.
    L'authentification n'est pas tout le temps nécessaire mais peut être demandée en fonction de la section du site où l'utilisateur décide d'aller.

    Pour ce faire, donc, j'ai lu qu'on pouvait mettre son propre contrôleur (RequestProcessor) pour vérifier avant d'entrer dans une action si on est connecté et qu'on a les droits suffisants.

    Moi ma question serait plutôt de savoir d'où je viens lorsque je me suis connecté pour être redirigé ensuite. Car je peux me connecter de n'importe où dans le site, et surtout en venant de n'importe où.

    Ainsi, si par exemple l'utilisateur clique sur le bouton "Passer une commande", je dois vérifier qu'il est connecté. S'il est connecté, OK sinon, il est redirigé vers la page de connexion / création de compte.
    Pour cette partie ça va mais c'est après que ça se corse :
    En sortie de l'action login(), il doit être redirigé vers la page sur laquelle il essayait d'aller précédemment.

    Une idée ?

  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
    Utilise le form-based authentification du conteneur, et indique dans ton web.xml tes url .do nécessitant des droits d'accès (security-constraint appliquée à des paths). Le conteneur sauvera qqe part la requete, affichera la page de login (configurée aussi dans le web.xml) et après le login correct (ou si la personne était déjà loggué), laissera cette même requete passer jusqu'au servlet qui la gère. Pour l'utilisateur çà fait

    * 1. submit struts
    * 2. page de login
    * 3. submit login
    * 4. vois le resultat de 1.

  3. #3
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 50
    Par défaut
    Merci tchize_ pour ta réponse.
    Ca a l'air simple comme tu en parles, mais j'aurais besoin d'un petit exemple de web.xml configuré comme tel.

    Si tu connais un petit tuto qui pourrait m'aider ce serait avec joie.

    Merci pour ta réponse en tout cas.

  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

  5. #5
    Membre confirmé
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    167
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 167
    Par défaut
    Tino13, saches que ce genre de methode est totalement dépendante de Tomcat. Donc ton site devra toujours tourner sous Tomcat...

  6. #6
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 50
    Par défaut
    Donc si je comprends bien (car j'ai relu le tuto des dizaines de fois avant de le comprendre) je suis effectivement lié à Tomcat, et je n'ai pas la possibilité de configurer un service métier dédié au login...

    C'est trop peu souple comme méthode.

    Sinon j'avais lu à un endroit qu'on pouvait déclarer son propre contrôleur.
    Dans ce contrôleur, exécuté avant d'arriver dans l'action Struts, je pourrais configurer la gestion de droits et la redirection vers une page de login (plus souple car compatible avec les Tiles d'ailleurs).

    Mon souci c'est vraiment de rediriger l'utilisateur vers l'action demandée en cas de succès de login et droits suffisants...

    Si quelqu'un a déjà fait ce genre de truc, ça m'aiderait bien.

  7. #7
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Citation Envoyé par jdvacheron Voir le message
    Tino13, saches que ce genre de methode est totalement dépendante de Tomcat. Donc ton site devra toujours tourner sous Tomcat...
    Je suis loin d'être spécialiste dans le domaine mais à ma connaissance, le mécanisme d'authentification cité par tchize_ fonctionne sur d'autres serveurs d'application que Tomcat.

  8. #8
    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 c_nvy Voir le message
    Je suis loin d'être spécialiste dans le domaine mais à ma connaissance, le mécanisme d'authentification cité par tchize_ fonctionne sur d'autres serveurs d'application que Tomcat.
    JE confirme, jdvacheron raconte n'importe quoi. C'est vrai que c'est mentionné dans les mécanisme de tomcat, et c'est vrai que la partie 'configurer où trouver la liste des utilisateurs' est spécifique à tomcat (çàd le realm), mais le mecanisme d'authentification est défini par le standard de sun sur les webapps et marchera dans tous les conteneurs qui le supportent (tomcat, jboss, jonas, gassfish, etc)
    Par contre chacun aura sa manière de configurer la lsite d'utilisateur, mais çà c'est pas grave, c'est de toutes facons spécifique à chaque entreprise / client

  9. #9
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Il y a par exemple un article ici pour une mise en oeuvre sur JBoss.

  10. #10
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 50
    Par défaut
    C'est le même tuto qu'on trouve à eu près partout et il ne m'apporte pas grand chose.
    D'après ce que j'en comprend, on est obligé dans nottre form d'avoir les input j_username et j_password, et on ne peut pas décider de l'action Struts à appeler pour l'authentification.

    Or moi j'ai besoin d'avoir ma propre méthode de login car je dois mettre par exemple certains trucs en session, caster mon utilisateur en fonction de ses droits, ...

    De plus, j'aurais besoin d'avoir plusieurs patterns de déclenchement de la redirection vers le login, non organisés en modules struts à proprement parler.
    Par exemple, je dois rediriger vers le login en fonction de la méthode appelée dans mon action (j'utilise le DispatchAction).

    Je suis sûr que je ne suis pas le seul à vouloir faire ce genre de truc.

    Merci de votre aide

  11. #11
    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
    La spécificaition n'est pas prévue pour ce genre de comportement. Les limitation d'accès au niveau de J2EE, gérées par le conteneur, ne sont possibles que sur base d'une liste d'url (avec un * possible) et sur une liste de servlet.

    Donc dans ton cas, faut laisser tomber l'authentification au niveau du conteneur. Il te reste cependant une possibilité de gestion semi-automatique. Fait une recherche sur "security filter" au niveau de source forge. C'est une implémentation de l'authentification j2EE (respecte toutes les règles établies dans ton web.xml), mais gérée au niveau de la webapp et non du conteneur. Il a pas mal de possiblité supplémentaire, comme le fait de pouvoir provoquer une demande de login et probablement aussi de pouvoir mettre des listener sur l'action de login. Tu risque de devoir garder avec çà tes j_username et autre, mais au moins tu peux manipuler à ta guise le système d'authentification.


    Si çà ne te conviens toujours pas, ben faut soit chercher ailleurs, soit coder ton propre filtre / système d'authentification et tout faire à la main (bref comme tu le ferais en php si tu utilise pas .htaccess )

  12. #12
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 50
    Par défaut
    OK merci pour votre aide.
    Je vais essayer de me faire un truc hors container, on verra bien...

    Je tag le post comme résolu, je pense pas qu'on aura une réponse technique plus détaillée que ça.

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

Discussions similaires

  1. configuration d'un accès Internet avec redirection de ports
    Par loopback dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 02/03/2007, 07h21
  2. Détecter javascript avec redirection
    Par gforce dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 11/01/2007, 16h10
  3. formulaire avec redirection
    Par furth dans le forum Langage
    Réponses: 3
    Dernier message: 13/10/2006, 17h02
  4. Réponses: 3
    Dernier message: 05/05/2006, 03h05
  5. Probleme d'identification avec sessions PHP
    Par bontbont dans le forum Langage
    Réponses: 5
    Dernier message: 09/12/2005, 19h15

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