Partage
  • Partager sur Facebook
  • Partager sur Twitter

[express-session] Perte session côté client

    24 octobre 2021 à 11:44:20

    Bien le bonjour.

    J'ai régulièrement un problème avec les sessions sur mon site. La session semble perdue côté client, donc à priori je dirais que dans le routeur req.session.user n'existe plus, mais la session existe toujours dans la base de données Mongo ( j'utilise connect-mongo ).

    J'imagine qu'il s'agit d'un problème dans le choix des options, mais je ne comprend pas bien la doc ( express-session - npm ), c'est un peu trop technique pour moi. Du coup je ne sais pas bien si les options que j'ai choisies sont adaptées.

    Voici le bout de code avec la config :

    const httpSession = session({
        store: MongoStore.create({ mongoUrl: 'mongodb://localhost:27017/mydb' }),
        secret: 'keepItSecret',
        resave: false,
        saveUninitialized: false,
        unset: 'destroy',
        cookie: { secure: false, maxAge: 600000 }
    });
    app.use(httpSession);

    D'avance merci

    • Partager sur Facebook
    • Partager sur Twitter
      25 octobre 2021 à 10:41:54

      Salut,

      Ben de ce que je lis 

      express-session a écrit:

      cookie.maxAge

      Specifies the number (in milliseconds) to use when calculating the Expires Set-Cookie attribute. This is done by taking the current server time and adding maxAge milliseconds to the value to calculate an Expires datetime. By default, no maximum age is set.


      Donc, si tu balance un nombre comme 600000 ça donne 600000 ms / 1000 / 60 = 10 min... Une durée de 10 min.

      Ça n'est pas ce que tu as ?

      Sinon et a priori, si tu ne défini ni cookie.expires, ni cookie.maxAge, ton cookie devrait durée jusqu'à la fermeture du navigateur par le client :

      express-session a écrit:

      cookie.expires

      Specifies the Date object to be the value for the Expires Set-Cookie attribute. By default, no expiration is set, and most clients will consider this a "non-persistent cookie" and will delete it on a condition like exiting a web browser application.

      -
      Edité par BrainError 25 octobre 2021 à 10:42:39

      • Partager sur Facebook
      • Partager sur Twitter
        25 octobre 2021 à 11:50:04

        Ben, pour avoir un peu bossé sur du "côté client" de mon site ( donc en passant plus de dix minutes à être connecté et à changer de page, ce qui devrait maintenir la session ), j'ai constaté que la session est en quelque sorte perdue ( côté client, si je change de page le nom d'utilisateur et le bouton de déconnexion n'apparaissent plus quand je change de page, la variable req.session.user ne doit donc plus exister dans l'environnement node ).
        En revanche, si je regarde directement dans mongo ( avec mongoDB compass ) les sessions sont toujours stockées :/

        Bon, en rédigeant cette réponse, je viens de constater un truc intéressant. Quand je change de page, ça change la propriété "expires" du document dans mongo, mais pas la propriété "session".

        Je crois que je vais tenter de mettre "resave" à true ça devrait corriger ça ^^

        [edit]

        Oui, on dirait bien que c'est ça. La propriété "session" ( qui est un JSON, contenant entre autre l'originalMaxAge et le expires ) est bien modifiée à chaque changement de page. Maintenant, je suppose qu'il va falloir que je veille à ce qu'une activité prolongée sur une même page provoque un resave de temps en temps. Je sais pas bien comment je vais m'y prendre, mais il va falloir que je trouve...

        -
        Edité par LucasWerquin 25 octobre 2021 à 12:07:10

        • Partager sur Facebook
        • Partager sur Twitter

        [express-session] Perte session côté client

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown