【发布时间】:2015-02-23 22:26:02
【问题描述】:
我正在尝试为会话存储设置 Redis,但无法正常工作。我正在使用passport.js 和express-flash,如果我尝试运行当前的 Redis 设置,它将无法正常工作:
var session = require('express-session');
var favicon = require('serve-favicon');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var redis = require("redis").createClient();
var RedisStore = require("connect-redis")(session);
var load = require('express-load');
var flash = require('express-flash');
var path = require('path');
var logger = require('morgan');
var i18n = require('i18n-2');
var passport = require('passport');
var mongoose = require('mongoose');
如果我使用此会话设置:
app.use(session({
secret: 'keyboard cat'
}));
这将显示一个错误,指出在生产环境中使用不安全,但 passport.js 和 express-flash 可以工作。
继续使用 Redis:
app.use(session({
store: new RedisStore({
host: 54.94.171.197,
port: 3000,
client: redis
}),
secret: 'keyboard cat'
}));
我应该把静态IP放在主机里,把3000放在端口里吗?我对需要传递给新实例的正确值感到非常困惑。
这是我的中间件:
app.use(favicon(__dirname + '/public/images/icons/fav.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(flash());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(session({
store: new RedisStore({
host: global.config.site.host,
port: 6379,
client: redis
}),
secret: 'keyboard cat'
}));
// Productions Middlewares
if (process.env.NODE_ENV === 'production') {
app.use(passport.initialize());
app.use(passport.session());
app.use('/admin', middleware.ensureAuthenticated);
app.use(middleware.ensureHttps);
}
【问题讨论】:
-
您的具体问题是什么?你能显示错误吗?
标签: javascript node.js express redis