【发布时间】:2012-02-05 15:39:01
【问题描述】:
我尝试使用 redis 的 express 会话。
但是我不知道为什么会出现这个错误
Cannot set property 'user' of undefined
【问题讨论】:
标签: session node.js redis express
我尝试使用 redis 的 express 会话。
但是我不知道为什么会出现这个错误
Cannot set property 'user' of undefined
【问题讨论】:
标签: session node.js redis express
app.use(app.router); 应该在 cookieParser 和会话中间件之后。否则,您将无法访问路由内的会话。
下次在您的问题中添加堆栈跟踪将帮助其他人更快地帮助您。
通常,了解每个中间件的作用有助于防止此类错误。
【讨论】:
尝试关注。
var express = require('express');
var redis = require("redis");
var session = require('express-session');
var redisStore = require('connect-redis')(session);
var bodyParser = require('body-parser');
var client = redis.createClient();
var app = express();
app.set('views', __dirname + '/views');
app.engine('html', require('ejs').renderFile);
app.use(session({
secret: 'ssshhhhh',
// create new redis store.
store: new redisStore({ host: 'localhost', port: 6379, client: client,ttl : 260}),
saveUninitialized: false,
resave: false
}));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.get('/',function(req,res){
// create new session object.
if(req.session.key) {
// if email key is sent redirect.
res.redirect('/admin');
} else {
// else go to home page.
res.render('index.html');
}
});
app.post('/login',function(req,res){
// when user login set the key to redis.
req.session.key=req.body.email;
res.end('done');
});
app.get('/logout',function(req,res){
req.session.destroy(function(err){
if(err){
console.log(err);
} else {
res.redirect('/');
}
});
});
app.listen(3000,function(){
console.log("App Started on PORT 3000");
});
链接:https://codeforgeek.com/2015/07/using-redis-to-handle-session-in-node-js/
【讨论】: