gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 11:21:31 26 4
gpt4 key购买 nike

我正在尝试为 session 存储设置 Redis,但无法正常工作。我正在使用 passport.jsexpress-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');

如果我使用这个 session 设置:

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);
}

最佳答案

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

使用像 nconf 这样的东西让您的配置脱离代码。

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

{
"sessionSecret": "cat something",
"redis": {
"host": "localhost",
"port": 6379
}
}

配置nconf寻找配置文件

var nconf = require('nconf');
nconf.file({ file: '/path/to/config.json' })

然后在你的 session 中间件中使用配置

app.use(session({
store: new RedisStore({
host: nconf.get('redis:host'),
port: nconf.get('redis:port'),
client: redis
}),
secret: nconf.get('sessionSecret')
}));

关于javascript - 如何为我的生产环境配置 Redis Store?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28667505/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com