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 :

Perte du "remoteUser" en session


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 105
    Par défaut Perte du "remoteUser" en session
    Bonjour,
    j'utilise la méthode suivante pour récupérer mon utilisateur en cours (et tester les droits d'accès) et je mets cet utilisateur en session.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String utilisateur = aRequest.getRemoteUser();
    aRequest.getSession().setAttribute("utilisateur", utilisateur);
    Mon problème c'est que je ne sais pas comment récupérer mon utilisateur dans une action en cours si la session a expiré...

  2. #2
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    Si la session a expirée, tu n'as aucun moyen de récupérer un objet de session et qui plus est l'utilisateur (tout est passé à null).

    Il n'est donc pas possible de faire ce que tu demandes.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 105
    Par défaut
    C'est bien ce que je craignait!

    Il n'y aurait pas un autre moyen que la session pour que je puisse faire mon "getRemoteUser()" qu'une seule fois et garder mon utilisateur en cours?

  4. #4
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    il faut donc que tu ralonges le temps de session au niveau du serveur (a utiliser avec précaution car il chargera plus le serveur : les objets resteront plus longtemps en mémoire).

    Dans tous les cas, il faut que tu rediriges l'utilisateur vers une page d'authentification manuel ou tu peux générer un cookie sur le poste utilisateur que tu revérifieras lors d'une fin de session coté serveur.

    Fait une recherche sur le forum tu trouveras surement ta réponse.

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Par défaut
    Dans le principe, voici ce qui est mis en oeuvre.

    1. Récupération de l'utilisateur (login ou autre méthode)
      1. L'objet Utilisateur existe en session ? (oui, on poursuit, non, redirection vers la page de login)
    2. Stockage de l'objet Utilisateur en utilisant un ThreadLocal
    3. Mise en place d'un ServletFilter pour charger le ThreadLocal avec l'objet Utilisateur stocké en session
    4. Déchargement du ThreadLocal dans la session en sortie de ServletFilter


    De cette manière, le filter te retourneras sur la page d'identification si la session à expirée et ainsi, tu ne te retrouveras pas dans une classe d'action

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