Răsfoiți Sursa

Upgrade redis client for session store

Sotaro KARASAWA 11 ani în urmă
părinte
comite
41ff3a5356
2 a modificat fișierele cu 27 adăugiri și 12 ștergeri
  1. 23 10
      app.js
  2. 4 2
      package.json

+ 23 - 10
app.js

@@ -16,6 +16,7 @@ var express  = require('express')
   , middleware = require('./lib/middlewares')
   , middleware = require('./lib/middlewares')
   , time     = require('time')
   , time     = require('time')
   , async    = require('async')
   , async    = require('async')
+  , session  = require('express-session')
   , models
   , models
   , config
   , config
   , server
   , server
@@ -27,6 +28,7 @@ time.tzset('Asia/Tokyo');
 
 
 var app = express();
 var app = express();
 var env = app.get('env');
 var env = app.get('env');
+var days = (1000*3600*24*30);
 
 
 // mongoUri = mongodb://user:password@host/dbname
 // mongoUri = mongodb://user:password@host/dbname
 var mongoUri = process.env.MONGOLAB_URI
 var mongoUri = process.env.MONGOLAB_URI
@@ -38,14 +40,29 @@ mongo.connect(mongoUri);
 
 
 sessionConfig = {
 sessionConfig = {
   rolling: true,
   rolling: true,
-  secret: process.env.SECRET_TOKEN || 'this is default session secret'
+  secret: process.env.SECRET_TOKEN || 'this is default session secret',
+  resave: false,
+  saveUninitialized: true,
+  cookie: {
+    maxAge: days,
+  },
 };
 };
+var redisUrl = process.env.REDISTOGO_URL
+  || process.env.REDIS_URL
+  || null;
+
+if (redisUrl) {
+  var ru   = require("url").parse(redisUrl);
+  var redis = require("redis");
+  var redisClient = redis.createClient(ru.port, ru.hostname);
+  if (ru.auth) {
+    redisClient.auth(ru.auth.split(":")[1]);
+  }
 
 
-if (process.env.REDIS_URL) {
-  RedisStore = require('connect-redis')(express);
+  RedisStore = require('connect-redis')(session);
   sessionConfig.store = new RedisStore({
   sessionConfig.store = new RedisStore({
     prefix: 'crowi:sess:',
     prefix: 'crowi:sess:',
-    url: process.env.REDIS_URL
+    client: redisClient,
   });
   });
 }
 }
 
 
@@ -59,7 +76,7 @@ app.set('views', __dirname + '/views');
 app.use(express.methodOverride());
 app.use(express.methodOverride());
 app.use(express.bodyParser());
 app.use(express.bodyParser());
 app.use(express.cookieParser());
 app.use(express.cookieParser());
-app.use(express.session(sessionConfig));
+app.use(session(sessionConfig));
 app.use(flash());
 app.use(flash());
 
 
 configModel = require('./models/config')(app);
 configModel = require('./models/config')(app);
@@ -81,8 +98,7 @@ async.series([
 
 
     // configure application
     // configure application
     app.use(function(req, res, next) {
     app.use(function(req, res, next) {
-      var days = (1000*3600*24*30)
-        , now = new Date()
+      var now = new Date()
         , fbparams = {}
         , fbparams = {}
         , config = app.set('config');
         , config = app.set('config');
 
 
@@ -91,9 +107,6 @@ async.series([
 
 
       req.config = config;
       req.config = config;
 
 
-      req.session.cookie.expires = new Date(Date.now() + days);
-      req.session.cookie.maxAge = days;
-
       config.crowi['app:url'] = req.baseUrl = (req.headers['x-forwarded-proto'] == 'https' ? 'https' : req.protocol) + "://" + req.get('host');
       config.crowi['app:url'] = req.baseUrl = (req.headers['x-forwarded-proto'] == 'https' ? 'https' : req.protocol) + "://" + req.get('host');
       res.locals({
       res.locals({
         req: req,
         req: req,

+ 4 - 2
package.json

@@ -23,7 +23,7 @@
     "bower": "~1.3.9",
     "bower": "~1.3.9",
     "cli": "~0.6.4",
     "cli": "~0.6.4",
     "connect-flash": "~0.1.1",
     "connect-flash": "~0.1.1",
-    "connect-redis": "^1.4.7",
+    "connect-redis": "^2.1.0",
     "consolidate": "=0.10.0",
     "consolidate": "=0.10.0",
     "debug": "^1.0.3",
     "debug": "^1.0.3",
     "express": "=3.4.4",
     "express": "=3.4.4",
@@ -47,7 +47,9 @@
     "socket.io": "~0.9.16",
     "socket.io": "~0.9.16",
     "socket.io-client": "~0.9.16",
     "socket.io-client": "~0.9.16",
     "swig": "=1.3.2",
     "swig": "=1.3.2",
-    "time": "=0.10.0"
+    "time": "=0.10.0",
+    "redis": "~0.12.1",
+    "express-session": "~1.9.3"
   },
   },
   "devDependencies": {},
   "devDependencies": {},
   "license": [
   "license": [