簡體   English   中英

req.session是未定義的快速會話

[英]req.session is undefined express-session

我知道這個問題已經問過幾次了。 但是,我所讀的答案都無法解決我的問題。

由於express-session當前是一個單獨的模塊,因此其中許多對於Express v4已經過時了。 這些問題/答案在這里:

其他問題已更新,但是給出的解決方案不能解決我的問題。 這些問題/答案在這里:

大多數解決方案是配置應用程序時中間件的順序。 我嘗試了不同的選擇,但沒有找到正確的方法。 也許就是這樣。

在其他解決方案中,有人說無法調用session中間件,因為如果調用了,則將定義req.session 我在app.use(session({...}))之后使用了中間件,並檢查了兩者是否都被調用。

此問題中,我還發現有人說商店斷開連接時,他的req.session不確定。 到目前為止,我正在使用默認商店。 這可能是問題嗎?

我收到此錯誤:

TypeError:無法讀取未定義的屬性“ destroy”

僅當我嘗試在login.js上使用req.session.destroy()注銷會話時,它req.session.destroy() (請參見下面的代碼)


我的密碼

server.js

const express = require('express');
const session = require('express-session');
const mongo = require('mongodb');
const passport = require('passport');
const path = require('path');
const routes = require('./app/routes');
const login = require('./app/routes/login.js');

const app = express();
app.use(session({
  secret: 'key',
  resave: false,
  saveUninitialized: true,
}));
app.use(passport.initialize());
app.use(passport.session());
app.use('/public', express.static(path.normalize('./public')));
app.use(routes);
app.use(login);
app.set('view engine', 'pug');

const MongoClient = mongo.MongoClient;
MongoClient.connect('mongodb://localhost:27017/myapp')
.then((db) => {
  // Link the database through the app. It will be available in the req.app object
  app.db = db;
  console.log('App listening on port ' + process.env.PORT);
  app.listen(process.env.PORT);
})
.catch((err) => {
  console.log('There was an error connecting to the database.');
  console.log(err);
});

module.exports = app; // For testing

login.js

const express = require('express');
const passport = require('passport');
const router = new express.Router();

// Other login logic here

router.get('/logout', (res, req) => {
  req.session.destroy((err) => {
    req.redirect('/');
  });
});

module.exports = router;

您在處理程序中交換了reqres參數:

router.get('/logout', (res, req) => { ... })

那應該是相反的方式:

router.get('/logout', (req, res) => { ... })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM