nswbmw / N-club

使用 Koa + MongoDB + Redis 搭建论坛系统
515 stars 107 forks source link

koa-generic-session set error: Cannot read property 'maxAge' of undefined #9

Open sumaolin opened 8 years ago

sumaolin commented 8 years ago

koa-generic-session 和 koa-generic-session-mongo 中相关的配置: app.js

app.use(session({
  store: new MongoStore(config.mongodb)
}));

config/default.js

  mongodb: {
    url: 'mongodb://127.0.0.1:27017/club'
  },

每次post /signin 时候执行到 routes/signin.js

  this.session = {
    user: userInfo.name,
    email: userInfo.email
  };

就报错:

koa-generic-session set error: Cannot read property 'maxAge' of undefined
    at MongoStore.set$ (f:\Users\dev\bbs\node_modules\koa-generic-session-mongo\dist\store.js:195:33)
    at tryCatch (f:\Users\dev\bbs\node_modules\babel-runtime\regenerator\runtime.js:72:40)
    at GeneratorFunctionPrototype.invoke [as _invoke] (f:\Users\dev\bbs\node_modules\babel-runtime\regenerator\runtime.js:334:22)
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (f:\Users\dev\bbs\node_modules\babel-runtime\regenerator\runtime.js:105:21)
    at onFulfilled (f:\Users\dev\bbs\node_modules\co\index.js:65:19)
    at f:\Users\dev\bbs\node_modules\co\index.js:54:5
    at Object.co (f:\Users\dev\bbs\node_modules\co\index.js:50:10)
    at Object.toPromise (f:\Users\dev\bbs\node_modules\co\index.js:118:63)
    at next (f:\Users\dev\bbs\node_modules\co\index.js:99:29)
    at onFulfilled (f:\Users\dev\bbs\node_modules\co\index.js:69:7)
    at f:\Users\dev\bbs\node_modules\co\index.js:54:5
    at Object.co (f:\Users\dev\bbs\node_modules\co\index.js:50:10)
    at Object.toPromise (f:\Users\dev\bbs\node_modules\co\index.js:118:63)
    at next (f:\Users\dev\bbs\node_modules\co\index.js:99:29)
    at onFulfilled (f:\Users\dev\bbs\node_modules\co\index.js:69:7)
    at f:\Users\dev\bbs\node_modules\co\index.js:54:5

windows开发环境,一直找不到原因,求助 @nswbmw

nswbmw commented 8 years ago

检查浏览器是否把Cookie禁用了

sumaolin commented 8 years ago

不是浏览器Cookie 的问题,用了给别的方法解决了 app.js session 设置

app.use(session({
  store: new MongoStore(config.mongodb),
  beforeSave: function(ctx, sess){
    ctx.session.cookie = sess.cookie = {
      httpOnly: true,
      path: '/',
      overwrite: true,
      signed: true,
      maxAge: 24 * 60 * 60 * 1000 //one day in ms
    };
  }
}));

效果实现了,不知道有啥影响不!