Heim > Fragen und Antworten > Hauptteil
Ich versuche, ein einfaches Anmeldeformular zu erstellen, mit dem sich Benutzer bei einer Website anmelden und dann ihre Sitzungsdaten in einem Sitzungscookie speichern können. Ich verwende Express-Session und in der Dokumentation wird Folgendes als Beispiel für die Einrichtung aufgeführt:
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('/') }) }) })
Aber in meinem Code erhalte ich immer wieder eine Fehlermeldung im Abschnitt „req.session.user“, die besagt: „Eigenschaft ‚Benutzer‘ existiert nicht für Typ ‚Sitzung und Abschnitt‘“ , obwohl ich genau den gleichen Code verwende in der Express-Session-Dokumentation.
Ich habe alle Anweisungen in der Dokumentation befolgt und dies oben in das Programm eingefügt:
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 } }));
Beim Debuggen kann ich feststellen, dass in req.session tatsächlich kein „user“-Attribut vorhanden ist.
Ich habe Google und Stackoverflow durchsucht, aber keine Lösung gefunden. Mir fehlen höchstwahrscheinlich einige kleine Schritte und ich hoffe, dass mir hier jemand helfen kann, mich weiterzubilden.
Vielen Dank für Ihre Hilfe im Voraus.
P粉2036487422024-02-05 00:14:28
从@types/express-session
包中我们可以看到
/** * 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; }
因此,您应该在会话对象上声明 user
属性,如下所示:
declare module 'express-session' { interface SessionData { user: string; } } app.post('/login', express.urlencoded({ extended: false }), function (req, res) { req.session.user = req.body.user })
软件包版本:"express-session": "^1.17.1"