Rumah > Soal Jawab > teks badan
Saya cuba membuat borang log masuk mudah untuk pengguna log masuk ke tapak web dan kemudian menyimpan data sesi mereka ke dalam kuki sesi. Saya menggunakan sesi ekspres dan dalam dokumentasi mereka ia memberikan ini sebagai contoh untuk menyediakannya:
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('/') }) }) })
Tetapi dalam kod saya, saya terus mendapat ralat dalam bahagian "req.session.user" yang mengatakan: "'Pengguna' hartanah tidak wujud pada jenis 'sesi dan bahagian'" walaupun saya menggunakan kod yang Tepat sama dalam dokumentasi Sesi Ekspres.
Saya mengikuti semua arahan dalam dokumentasi dan meletakkan ini di bahagian atas program:
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 } }));
Semasa menyahpepijat, saya dapat melihat bahawa memang tiada atribut "pengguna" di dalam req.session.
Saya telah mencari di google dan stackoverflow tetapi tidak menemui penyelesaian. Saya berkemungkinan besar kehilangan beberapa langkah kecil dan saya berharap seseorang di sini boleh membantu mendidik saya.
Terima kasih atas bantuan anda terlebih dahulu.
P粉2036487422024-02-05 00:14:28
Dari @types/express-session
pakej kita boleh lihat
/** * 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; }
Oleh itu, anda harus mengisytiharkan atribut user
pada objek sesi seperti ini:
declare module 'express-session' { interface SessionData { user: string; } } app.post('/login', express.urlencoded({ extended: false }), function (req, res) { req.session.user = req.body.user })
Versi pakej: "express-session": "^1.17.1"