recherche

Maison  >  Questions et réponses  >  le corps du texte

req.session.user - La propriété « utilisateur » n'existe pas lors de l'erreur de type « Session » lors de la tentative de transmission des données de session à l'aide d'une session express ;

J'essaie de créer un formulaire de connexion simple permettant aux utilisateurs de se connecter à un site Web, puis d'enregistrer leurs données de session dans un cookie de session. J'utilise express-session et dans leur documentation, il donne ceci comme exemple de configuration :

app.post('/login', express.urlencoded({ extended: false }), function (req, res) {
  // login logic to validate req.body.user and req.body.pass
  // would be implemented here. for this example any combo works

    // store user information in session, typically a user id
    req.session.user = req.body.user

    // save the session before redirection to ensure page
    // load does not happen before session is saved
    req.session.save(function (err) {
      if (err) return next(err)
      res.redirect('/')
    })
  })
})

Mais dans mon code, je reçois toujours une erreur dans la section "req.session.user" qui dit : "La propriété 'utilisateur' n'existe pas sur le type 'session et section'" même si j'utilise exactement le même code dans la documentation de la session express.

J'ai suivi toutes les instructions de la documentation et mis ceci en haut du programme :

import session from 'express-session';

app.set('trust proxy', 1);

app.use(session({  
  name: `First_test`,
  secret: 'secret_text', 
  saveUninitialized: true, 
  resave: true,
  cookie: { 
    secure: false, 
    maxAge: 960000 
  } 
}));

Pendant le débogage, je peux voir qu'il n'y a effectivement aucun attribut "user" dans req.session.

J'ai cherché sur Google et Stackoverflow mais je n'ai pas trouvé de solution. Il me manque probablement quelques petites étapes et j'espère que quelqu'un ici pourra m'aider à m'éduquer.

Merci d'avance pour votre aide.

P粉593536104P粉593536104325 Il y a quelques jours456

répondre à tous(1)je répondrai

  • P粉203648742

    P粉2036487422024-02-05 00:14:28

    Du @types/express-sessionpaquet, nous pouvons voir

    /**
         * This interface allows you to declare additional properties on your session object using [declaration merging](https://www.typescriptlang.org/docs/handbook/declaration-merging.html).
         *
         * @example
         * declare module 'express-session' {
         *     interface SessionData {
         *         views: number;
         *     }
         * }
         *
         */
        interface SessionData {
            cookie: Cookie;
        }

    Par conséquent, vous devez déclarer l'attribut user sur l'objet session comme ceci :

    declare module 'express-session' {
      interface SessionData {
        user: string;
      }
    }
    
    app.post('/login', express.urlencoded({ extended: false }), function (req, res) {
      req.session.user = req.body.user
    })

    Version du package : "express-session": "^1.17.1"

    répondre
    0
  • Annulerrépondre