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

Flex Discussion :

Flex+J2EE : Session timeout


Sujet :

Flex

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Points : 111
    Points
    111
    Par défaut Flex+J2EE : Session timeout
    Bonjour,

    Je cherche à faire une redirection lorsque la session du côté serveur est invalide.
    J'ai pensé à deux solutions :
    1) Faire un filtre qui vérifie si la session est toujours valide
    2) Intercepter l'erreur spécifique et faire la redirection adéquate grâce à une déclaration dans le web.xml

    Bien que ne l'ayant pas testé, je pense que la solution 2 marchera. Mais je trouve la solution 1 plus propre.
    Le problème de la solution 1 c'est que je suis incapable de faire la différence entre l'appel au service de login de l'utilisateur où la session est créée et les appels des autres services qui nécessitent une session valide puisque dans les deux cas ça passe par une adresse du style "/messagebroker" (config par défaut du plugin Flex pour Eclipse).

    Avez-vous des recommandations ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Points : 111
    Points
    111
    Par défaut
    J'ai testé la solution 2.... sans succès car l'erreur n'est pas remontée, elle est transmise comme résultat de l'appel à un remoteObject (faultEvent).

    La question est donc : peut-on se débrouiller pour faire une redirection depuis un service qui n'est qu'un simple bean gérer par Spring ?

  3. #3
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut
    Salut,

    Tu veux rediriger l'utilisateur sur l'écran de login je suppose, pourquoi ne pas implémenter cela dans le handler d'erreur (FaultEvent ) ?

    J'ai peut être mal compris ton besoin

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Points : 111
    Points
    111
    Par défaut
    En effet, c'est une piste.

    Mais j'aurai voulu quelque chose de plus global, car là ça suppose que je fasse le contrôle dans chaque handler d'erreur de mon appli.
    En effet, 95% de mes services utilisent une variable en session pour le filtrage des données visibles par le profil de l'utilisateur courant.

    C'est pour ça qu'une solution côté serveur uniquement me paraitrait plus adaptée, en espérant que ce soit possible

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 319
    Points : 417
    Points
    417
    Par défaut
    Pour moi tu peux gérer ça avec un abstract delegate maison... avec un try catch par exemple sur tes appels à des remote object...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Points : 111
    Points
    111
    Par défaut
    euh, je suis désolé mais j'ai pas trop compris ta solution Kantizbak

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 319
    Points : 417
    Points
    417
    Par défaut
    L'idée c'est que tu fais un appel avec ton remote object, il plante car la session est tombée ; à ce moment là tu refais un login en faisant un try/catch de l'appel au service
    Tu fais une classe abstraite qui permet de faire ça qq soit le type de remote object et hop t'es tranquille ; j'ai fais ça et ça marche bien.

    c'était pour répondre à ta remarque :
    ça suppose que je fasse le contrôle dans chaque handler d'erreur de mon appli.
    pas besoin de le faire à chaque fois, suffit de mutualiser

    sinon remarque d'ordre général : à quoi sert de faire un client riche en flex si c'est pour conserver une variable en session côté serveur?
    Autant faire un client html oueb1.0

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Points : 111
    Points
    111
    Par défaut
    à ce moment là tu refais un login en faisant un try/catch de l'appel au service
    Je refais un login moi-même, sans proposer la page adéquate à l'utilisateur ?

    Et puis je dois pas être réveillé, mais par "try/catch de l'appel", tu entends ceci ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    try{
       monRemoteObject.maMethode();
    }
    catch(e:Exception){
       //gérer l'exception
    }

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 319
    Points : 417
    Points
    417
    Par défaut
    Oui quelque chose comme ça

    Je ne compte pas te donner une solution complète tu comprendras, et puis ton cas est un peu particulier... l'idée c'est soit tu "reloggue" automatiquement ton utilisateur si tu veux réaliser une authent transparente (via flex ça peut poser des problèmes de sécu, je sais que par ntlm, l'authent de windows par exemple, c'est possible), soit tu modifie ta vue en affichant le login dans ton catch

    bon c'est pas terrible en terme de conception de faire ça direct dans le catch mais l'idée directrice pour moi c'est ça

    si j'ai bien compris ton besoin évidemment

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Points : 894
    Points
    894
    Par défaut
    J'ai pas tout compris de cette discussion mais il y a un truc qui me parait curieux.

    Je ne crois pas que l'appel à une méthode d'un remoteObject déclenchera une erreur d'exécution. Si la session côté serveur n'est plus valide l'erreur sera renvoyée via un événement donc c'est pas au niveau du catch que tu peux gérer ça...

    A moins que je n'ai rien compris du tout...
    jyl@xx
    "Simplicity does not precede complexity, but follows it." Alan Perlis

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Points : 111
    Points
    111
    Par défaut
    Je suis d'accord avec jylaxx, je ne comprends pas comment ça peut marcher.

    Sinon, toujours pour jylaxx, la discussion est de savoir comment faire pour réaliser une redirection lorsque la session côté serveur n'est plus valide.

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Points : 894
    Points
    894
    Par défaut
    une redirection lorsque la session côté serveur n'est plus valide
    J'utilise un serveur JAVA basé sur des sessions persistantes. Je pense que c'est l'un des intérêts d'une application Flex, pouvoir initialiser une session et conservée la même session tout au long de l'utilisation de l'application.

    En plus j'utilise mon propre serveur basé sur la librairie Apache-MINA, et côté Flex j'utilise directement la classe Socket, donc j'ai peur de pas pouvoir t'aider davantage...
    jyl@xx
    "Simplicity does not precede complexity, but follows it." Alan Perlis

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 319
    Points : 417
    Points
    417
    Par défaut
    Citation Envoyé par jylaxx Voir le message
    J'ai pas tout compris de cette discussion mais il y a un truc qui me parait curieux.

    Je ne crois pas que l'appel à une méthode d'un remoteObject déclenchera une erreur d'exécution. Si la session côté serveur n'est plus valide l'erreur sera renvoyée via un événement donc c'est pas au niveau du catch que tu peux gérer ça...

    A moins que je n'ai rien compris du tout...
    Tout à fait c'est plutôt sur un faultEvent que tu peux le gérer ; pour l'idée c'est que tu ne peux savoir si la session est fermée côté serveur que lorsque tu fais un appel de service en te croyant authentifié... dans le cas où la session est fermée, tu récupère un fautEvent avec un message particulier, c'est ce cas que tu peux gérer partout...
    à ce moment tu gère ta "redirection" ce qui en flex n'a pas de sens réel... il suffit de rappeler la vue de login

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Points : 111
    Points
    111
    Par défaut
    C'est ce que je pensais, mais devoir gérer ça partout....je ne suis pas sorti

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 319
    Points : 417
    Points
    417
    Par défaut
    d'ou l'idée d'avoir une classe abstraite qui gère de base les faultevent et dont tous tes delegate / remote object / commandes (ça dépend de ton architecture logicielle) vont hériter !

    c'est une classe, 3 lignes dasn une méthode et une ligne supplémentaire dans tes faulthandler, pas la mer à boire

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Points : 111
    Points
    111
    Par défaut
    Oui, sauf que j'ai eu la bonne idée d'appeler mes resultHandler d'une manière différente suivant la logique qu'il y a derrière et que parfois j'ai plusieurs handler dans mes commandes car plusieurs appels

    Mais ton idée est judicieuse et j'y penserai la prochaine fois !

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Points : 111
    Points
    111
    Par défaut
    Je viens de m'apercevoir qu'avec l'objet FlexContext, on pouvait récupérer les HttpServletRequest et HttpServletResponse. Finalement, il y aura peut-être moyen de faire un redirect "à l'ancienne" (enfin un rechargement de l'appli, pour que l'utilisateur se relogue).

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 319
    Points : 417
    Points
    417
    Par défaut
    Citation Envoyé par Fichman Voir le message
    Je viens de m'apercevoir qu'avec l'objet FlexContext, on pouvait récupérer les HttpServletRequest et HttpServletResponse. Finalement, il y aura peut-être moyen de faire un redirect "à l'ancienne" (enfin un rechargement de l'appli, pour que l'utilisateur se relogue).
    Ouhlà ! bon je vais faire un peu le relou de service en terme de conception :

    imaginons (bon ce n'est pas forcément la meilleure solution mais c'est un exemple) que tu tu gère ton application avec un viewStack, contenant deux vues : un panel de login et ton appli réelle, ce serait bien ne simplement switcher ta vue, non?

    le but du ria, c'est de ne pas recharger ton appli dès que tu n'es plus connecté !!!

    au contraire, tu dois "rediriger" au sein de ton appplication

  19. #19
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut
    Comme je l'ai dit et comme le dit Kantizbak, niveau ergonomie recharger l'appli c'est un peu beaucoup bof , une simple redirection vers une vue interne à l'application est suffisante et ne permet pas à l'utilisateur d'avoir accès aux autres vue avant de s'être connecté (via authentification serveur). En plus, c'est tehcniquement beaucoup plus simple amha

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Points : 111
    Points
    111
    Par défaut
    Non mais je suis complétement d'accord.

    Le problème c'est que récupérer côté client l'erreur spécifique de la session invalide m'oblige à modifier mon code à trop d'endroit.
    Donc en attendant...

Discussions similaires

  1. [Session] problème avec le session-timeout
    Par khokho dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 29/06/2006, 13h20
  2. portée de session.timeout
    Par ryan dans le forum ASP
    Réponses: 6
    Dernier message: 06/04/2006, 23h21
  3. [Session]Session timeout
    Par Sniper37 dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 13/12/2005, 09h29
  4. valeur maximale de session.timeout?
    Par ryan dans le forum ASP
    Réponses: 3
    Dernier message: 13/09/2004, 22h11
  5. [JSP]recuperer session-timeout dans web.xml
    Par seb_fou dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 07/05/2004, 16h01

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