req.session.user – Eigenschaft „user' existiert nicht für den Typ „Session'; Fehler beim Versuch, Sitzungsdaten mithilfe einer Express-Sitzung zu übergeben
P粉593536104
P粉593536104 2024-02-04 09:05:25
0
1
436

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粉593536104
P粉593536104

Antworte allen(1)
P粉203648742

@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"

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage