Maison > Questions et réponses > le corps du texte
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粉2036487422024-02-05 00:14:28
Du @types/express-session
paquet, 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"