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

AJAX Discussion :

Reflexion : comment gérer les sessions avec rafrachissement automatique de la page ?


Sujet :

AJAX

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 821
    Points : 979
    Points
    979
    Par défaut Reflexion : comment gérer les sessions avec rafrachissement automatique de la page ?
    Bonjour,

    Sur un système embarqué, j'ai un serveur Web qui permet de récupérer l'état du produit et de le configurer.
    Les fichiers .htm, .css et .js ne contiennent que du code statique ce qui permet au navigateur Web de les garder en cache (permet un chargement rapide des pages).
    Seuls les fichiers .json contiennent des données dynamiques qui sont générées à la volée.

    J'ai des donc des fichiers .htm qui utilisent des scripts .js qui exécutent régulièrement des requêtes AJAX pour récupérer l'état du produit et ainsi rafraichir automatiquement la page Web (toutes les secondes).
    La récupération de l'état du produit se fait via des requêtes HTTP GET vers des fichiers .json et la configuration du produit via des requêtes HTTP POST vers ces mêmes fichiers .json.

    Actuellement, le timeout de mes sessions HTTP est réinitialisé à chaque fois que mon serveur Web embarqué reçoit une requête HTTP vers un fichier (.htm, .css, .js, .json) existant.
    => Donc si un utilisateur oubli de fermer son navigateur web, la session n'expire jamais.
    => Lorsqu'il expiration de session (où qu'il n'y a pas de session ouverte... cas arrivant lorsque l'on redémarre le produit) vers un fichier .json, le serveur renvoit un HTTP redirect vers le fichier "/sessionIsClosed.json", ce qui permet au script .js de détecter qu'il n'y a plus/pas de session ouverte et donc de donner l'ordre au navigateur Web de charger la page "/login.htm". Pour tous les autres types de fichiers, en cas de session non ouverte, le serveur renvoit un HTTP redirect vers le fichier "/login.htm".

    Je pourrai désactiver la réinitialisation du timeout de mes sessions HTTP pour les requêtes HTTP GET sur fichiers .json mais ça implique que l'utilisateur ne pourra plus scruter l'état du produit pendant de longues périodes, ce qui peut être utile si on veut afficher un graphique qui se rafraichit automatiquement à chaque requête AJAX (étant sur un système embarqué avec une taille de RAM limité, il n'est pas possible d'enregistrer les données des graphiques dans la RAM du produit : il faut qu'elles soient enregistrées dans le cache du navigateur Web).

    A votre avis qu'elle est la meilleure méthode à utiliser, sachant que le produit contient des informations dites sensibles ? Quelles sont les pratiques utilisées pour ce genre d’application et avec quelle valeur de timeout de sessions ?


    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    ce qui se fait habituellement pour le web est de fixer une durée pendant laquelle la session reste ouverte sans nouvelles du client.
    si par exemple on fixe la durée à 5 minutes, cela veut dire que si la date de dernière connexion a plus de 5 minutes alors le client est considéré comme déconnecté.

    ensuite je ne suis pas sûr de comprendre cette phrase :
    Citation Envoyé par boboss123 Voir le message
    => Donc si un utilisateur oubli de fermer son navigateur web, la session n'expire jamais.
    en quoi cela pose problème si le navigateur reste ouvert pendant 2 jours et que la session reste ouverte ?

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 821
    Points : 979
    Points
    979
    Par défaut
    Au niveau de la sécurité, ça ne craint pas qu'une session reste ouverte alors que personne ne l'utilise vraiment ?

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    cela dépend de quelle sécurité vous parlez.

    cela dépend aussi de l'utilisation. si l'utilisateur se connecte au site chez lui, qu'il part en voyage 3 jours et qu'au retour il est toujours connecté, il va juste se dire "zut j'aurais dû éteindre l'ordinateur pour économiser de l'électricité".
    dans un autre cas d'utilisation, l'ordinateur peut se trouver dans une entreprise où, toutes les 2 heures, des personnes que l'utilisateur ne connait pas passent devant l'ordinateur. dans ce cas, l'utilisateur sera content d'être déconnecté au bout d'une heure.

    pour prendre en compte ces différentes utilisations, il peut être intéressant de laisser l'utilisateur personnaliser ce temps de déconnexion. vous mettez par défaut une durée de 30 minutes et si l'utilisateur n'a pas envie de se reconnecter à chaque fois, il pourra aller sur sa page de configuration et augmenter cette valeur en étant informé des conséquences si quelqu'un d'autre utilise son ordinateur pendant la durée de la session.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 821
    Points : 979
    Points
    979
    Par défaut
    Je suis dans le cas entreprise.
    Mais au final en y réfléchissant, le timeout de session de l'OS (windows, linux, ...) se déclenchera, donc pas forcement besoin de le gérer au niveau du serveur : il me semble donc que je peux rester sur ma solution actuelle.

    Oui une solution avec paramètre configurable pourrait aussi être une solution : je pourrai partir sur ma deuxième solution et avoir un bouton sur mon interface Web pour désactiver (ou rallonger) le timeout de la session en cours... mais je n'ai jamais vu de système qui fonctionnait comme ça.

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/12/2009, 12h29
  2. comment gérer les sessions avec du javascript ?
    Par zerros dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2009, 09h27
  3. Comment gérer les WideString avec du code ASM ?
    Par Zepeq dans le forum Langage
    Réponses: 2
    Dernier message: 06/04/2008, 11h57
  4. Gérer les sessions avec PEAR
    Par manaboko dans le forum Langage
    Réponses: 1
    Dernier message: 08/05/2006, 14h50
  5. [DAO] Comment gérer les liens avec la bdd dans mes classes?
    Par Wormus dans le forum Autres
    Réponses: 6
    Dernier message: 22/02/2006, 16h14

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