Partage
  • Partager sur Facebook
  • Partager sur Twitter

Les variables de sessions en nodejs

Sujet résolu
    14 novembre 2019 à 12:17:53

    Bonjour,

    Cette question va paraître étrange mais d'après moi, il n'y a pas moyen sur le net de trouver un bon tuto sur les variables de session en nodejs et je me tourne vers vous pour un peu d'aide.

    Je viens du PHP et je voudrais savoir comment faire pour créer une variable de session type $_SESSION['ma_var'] et l'utiliser quand bon me semble.

    Pour le coup, ici, je fais une connexion via Facebook connect et je voudrais mettre dans une variable de session les infos de l'utilisateur (son email, son nom etc etc).

    Est-ce que quelqu'un peut me dire comment faire pour que je puisse appeler cette variable de session depuis n'importe où dans le code ?

    Je vous passe mon bout de code dans lequel il faudrait que je puisse initialiser la variable de session : 

    /************************** INITIALISATION *******************************/
    const express = require ('express');
    const session = require('express-session');
    const morgan = require('morgan');
    const app = express();
    const path = require('path');
    const Datastore = require('nedb');
    
    
    
    /**************************** INTRO ! ************************************/
    const server = app.listen(3000, () => console.log('listening at 3000'));
    const io = require('socket.io')(server);
    app.use(morgan('conbined'));
    app.use('/',express.static('public'));
    app.use(express.json({limit :'1mb'}));
    const database = new Datastore('database.db');
    database.loadDatabase();
    
    
    
    /**************************** START ! ************************************/
    app.use(session ({
        secret : 'keyboard cat',
        saveUninitialized : true,
        resave:false
    }));
    
    
    app.use('/connect', function(request, response){
        
        
        request.session.email = request.body.email;
        const connect_data = request.body;
        
        connect_data.status = 'connecté';
        database.insert(connect_data);
        response.json(connect_data);
        // console.log(connect_data);
    });
    

    Il me faudrait donc mettre dans le app.use('/connect') une implémentation de la variable de session avec les données de l'utilisateur. 

    Merci pour votre aide et la lecture de ce post,

    Axel

    • Partager sur Facebook
    • Partager sur Twitter
      14 novembre 2019 à 23:13:13

      Bonjour,

      En utilisant express-session tu peux tout simplement récupérer la session dans la requête de ton action en faisant req.session.

      La doc ici: https://github.com/expressjs/session

      • Partager sur Facebook
      • Partager sur Twitter
      "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" Mark Twain
        16 novembre 2019 à 18:21:06

        Bonjour,

        Je te remercie pour ta réponse et effectivement, c'est faisable mais une fois que je lance une autre fonction app.use(...) les variables de sessions disparaissent, c'est pourtant là que je voudrais les utiliser, tu aurais une idée à ce sujet ?

        • Partager sur Facebook
        • Partager sur Twitter
          16 novembre 2019 à 19:57:33

          C'est normal puisqu'il n'utilise pas la même instance quand tu refais un app.use de session.

          Il faut que tu fasses ton app.use à l'endroit où tu as toutes tes routes puis que tu utilises req.session.

          • Partager sur Facebook
          • Partager sur Twitter
          "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" Mark Twain

          Les variables de sessions en nodejs

          × 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