Explorar o código

refine express-init.js

Yuki Takei %!s(int64=6) %!d(string=hai) anos
pai
achega
7a268512e8

+ 2 - 0
config/logger/config.dev.js

@@ -1,6 +1,8 @@
 module.exports = {
   default: 'info',
 
+  // 'express-session': 'debug',
+
   /*
    * configure level for server
    */

+ 17 - 3
src/server/crowi/express-init.js

@@ -9,7 +9,7 @@ module.exports = function(crowi, app) {
   const cookieParser = require('cookie-parser');
   const methodOverride = require('method-override');
   const passport = require('passport');
-  const session = require('express-session');
+  const expressSession = require('express-session');
   const sanitizer = require('express-sanitizer');
   const basicAuth = require('basic-auth-connect');
   const flash = require('connect-flash');
@@ -19,10 +19,13 @@ module.exports = function(crowi, app) {
   const i18nFsBackend = require('i18next-node-fs-backend');
   const i18nSprintf = require('i18next-sprintf-postprocessor');
   const i18nMiddleware = require('i18next-express-middleware');
+
+  const avoidSessionRoutes = require('../routes/avoid-session-routes');
   const i18nUserSettingDetector = require('../util/i18nUserSettingDetector');
-  const env = crowi.node_env;
   const middleware = require('../util/middlewares');
 
+  const env = crowi.node_env;
+
   // Old type config API
   const config = crowi.getConfig();
   const Config = crowi.model('Config');
@@ -102,7 +105,18 @@ module.exports = function(crowi, app) {
   app.use(bodyParser.json({ limit: '50mb' }));
   app.use(sanitizer());
   app.use(cookieParser());
-  app.use(session(crowi.sessionConfig));
+
+  // configure express-session
+  app.use((req, res, next) => {
+    // test whether the route is listed in avoidSessionTroutes
+    for (const regex of avoidSessionRoutes) {
+      if (regex.test(req.path)) {
+        return next();
+      }
+    }
+
+    expressSession(crowi.sessionConfig)(req, res, next);
+  });
 
   // Set basic auth middleware
   app.use((req, res, next) => {

+ 5 - 0
src/server/routes/avoid-session-routes.js

@@ -0,0 +1,5 @@
+module.exports = [
+  /^\/_api\/v3\/healthcheck/,
+  /^\/_hackmd\//,
+  /^\/api-docs\//,
+];