首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为我的生产环境配置Redis Store?

如何为我的生产环境配置Redis Store?
EN

Stack Overflow用户
提问于 2015-02-23 13:41:16
回答 1查看 1.3K关注 0票数 0

我正在尝试为会话存储设置Redis,但在上不起作用。我正在使用passport.jsexpress-flash,如果我尝试运行当前的Redis设置,它将无法工作:

代码语言:javascript
复制
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');

如果我使用此会话设置:

代码语言:javascript
复制
app.use(session({
  secret: 'keyboard cat'
}));

这将显示一个错误,指出在生产中使用是不安全的,但是passport.js和快速闪存可以工作。

接下来是Redis:

代码语言:javascript
复制
app.use(session({
  store: new RedisStore({
     host: 54.94.171.197, 
     port: 3000,
     client: redis
   }),
  secret: 'keyboard cat'
}));

我是不是应该把静态IP放在主机上,把3000放在端口上?我对需要传递给新实例的正确值感到非常困惑。

这是我的中间件:

代码语言:javascript
复制
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);
}
EN

回答 1

Stack Overflow用户

发布于 2015-02-23 22:26:02

将应用程序的配置放在代码中是不好的做法。

使用像nconf这样的代码来使您的配置脱离代码。

例如,您可以使用config.json文件:

代码语言:javascript
复制
{
    "sessionSecret": "cat something",
    "redis": {
        "host": "localhost",
        "port": 6379
    }
}

配置nconf以查找配置文件

代码语言:javascript
复制
var nconf = require('nconf');
nconf.file({ file: '/path/to/config.json' })

然后在您的会话中间件中使用配置

代码语言:javascript
复制
app.use(session({
  store: new RedisStore({
     host: nconf.get('redis:host'),
     port: nconf.get('redis:port'),
     client: redis
   }),
  secret: nconf.get('sessionSecret')
}));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28667505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档