[英]Req.session undefined with express 4 and Redis store, express-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;
您在處理程序中交換了req
和res
參數:
router.get('/logout', (res, req) => { ... })
那應該是相反的方式:
router.get('/logout', (req, res) => { ... })
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.