req.session.user - 'pengguna' sifat tidak wujud pada jenis 'Sesi' semasa cuba menghantar data sesi menggunakan sesi ekspres
P粉593536104
P粉593536104 2024-02-04 09:05:25
0
1
408

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

membalas semua(1)
P粉203648742

Dari @types/express-sessionpakej 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"

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan