From 95a830e1094ebabdf9f4591d4da262d38d284b5b Mon Sep 17 00:00:00 2001 From: popomore Date: Sun, 4 Jun 2017 22:22:00 +0800 Subject: [PATCH 01/23] Release 2.1.1 --- History.md | 5 +++++ package.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/History.md b/History.md index f616cee..90fe2d2 100644 --- a/History.md +++ b/History.md @@ -1,4 +1,9 @@ +2.1.1 / 2017-06-04 +================== + + * docs: fix License url (#9) + 2.1.0 / 2017-03-02 ================== diff --git a/package.json b/package.json index 1cd359a..4e7718c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "egg-session", - "version": "2.1.0", + "version": "2.1.1", "description": "session plugin for egg", "eggPlugin": { "name": "session" From 4d3b4efc2460ceedeaf9781dbbff760be504e0b5 Mon Sep 17 00:00:00 2001 From: Yiyu He Date: Thu, 9 Nov 2017 00:06:16 -0600 Subject: [PATCH 02/23] refactor: upgrade koa-session, support egg2. [BREAKING CHANGE] (#10) --- .autod.conf.js | 1 - .travis.yml | 4 +- app/extend/application.js | 3 + package.json | 22 ++-- test/app/middleware/session.test.js | 123 +++++++++--------- test/fixtures/memory-session-generator/app.js | 19 +++ .../app/controller/home.js | 25 ++++ .../memory-session-generator/app/router.js | 9 ++ .../config/config.default.js | 3 + .../memory-session-generator/package.json | 3 + test/fixtures/memory-session/app.js | 6 +- .../memory-session/app/controller/home.js | 12 +- 12 files changed, 146 insertions(+), 84 deletions(-) create mode 100644 test/fixtures/memory-session-generator/app.js create mode 100644 test/fixtures/memory-session-generator/app/controller/home.js create mode 100644 test/fixtures/memory-session-generator/app/router.js create mode 100644 test/fixtures/memory-session-generator/config/config.default.js create mode 100644 test/fixtures/memory-session-generator/package.json diff --git a/.autod.conf.js b/.autod.conf.js index b2039bd..07768d8 100644 --- a/.autod.conf.js +++ b/.autod.conf.js @@ -8,7 +8,6 @@ module.exports = { 'benchmark', ], devdep: [ - 'egg', 'egg-ci', 'egg-bin', 'autod', diff --git a/.travis.yml b/.travis.yml index d680922..0458ab9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,8 @@ sudo: false language: node_js node_js: - - '6' - - '7' + - '8' + - '9' install: - npm i npminstall && npminstall script: diff --git a/app/extend/application.js b/app/extend/application.js index 944603f..d54eede 100644 --- a/app/extend/application.js +++ b/app/extend/application.js @@ -38,6 +38,9 @@ module.exports = { assert(typeof store.get === 'function', 'store.get must be function'); assert(typeof store.set === 'function', 'store.set must be function'); assert(typeof store.destroy === 'function', 'store.destroy must be function'); + store.get = this.toAsyncFunction(store.get); + store.set = this.toAsyncFunction(store.set); + store.destroy = this.toAsyncFunction(store.destroy); this.config.session.store = store; }, diff --git a/package.json b/package.json index 4e7718c..24f32f1 100644 --- a/package.json +++ b/package.json @@ -22,22 +22,22 @@ "cookie" ], "dependencies": { - "koa-session": "^4.0.0" + "koa-session": "^5.5.0" }, "devDependencies": { - "autod": "^2.7.1", - "egg": "^1.0.0-rc.1", - "egg-bin": "^2.2.3", - "egg-ci": "^1.2.0", - "egg-mock": "^3.0.1", + "autod": "^2.10.1", + "egg": "next", + "egg-bin": "^4.3.5", + "egg-ci": "^1.8.0", + "egg-mock": "^3.13.1", "egg-redis": "^1.0.1", - "eslint": "^3.16.1", - "eslint-config-egg": "^3.2.0", - "mz-modules": "^1.0.0", + "eslint": "^4.10.0", + "eslint-config-egg": "^5.1.1", + "mz-modules": "^2.0.0", "supertest": "^3.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=8.0.0" }, "scripts": { "lint": "eslint .", @@ -48,7 +48,7 @@ "autod": "autod" }, "ci": { - "version": "6, 7", + "version": "8, 9", "services": "redis-server", "type": "travis" }, diff --git a/test/app/middleware/session.test.js b/test/app/middleware/session.test.js index 3d8a755..cbaa2a1 100644 --- a/test/app/middleware/session.test.js +++ b/test/app/middleware/session.test.js @@ -24,40 +24,41 @@ describe('test/app/middlewares/session.test.js', () => { it('should get sessionStore', function* () { mm.empty(app.sessionStore, 'set'); yield agent - .get('/set?foo=bar') - .expect(200) - .expect({ foo: 'bar' }) - .expect('set-cookie', /EGG_SESS=.*?;/); + .get('/set?foo=bar') + .expect(200) + .expect({ foo: 'bar' }) + .expect('set-cookie', /EGG_SESS=.*?;/); yield agent.get('/get') - .expect(200) - .expect({}); + .expect(200) + .expect({}); }); it('should session store can be change', function* () { mm(app.config, 'env', 'local'); yield agent - .get('/set?foo=bar') - .expect(200) - .expect({ foo: 'bar' }) - .expect('set-cookie', /EGG_SESS=.*?;/); + .get('/set?foo=bar') + .expect(200) + .expect({ foo: 'bar' }) + .expect('set-cookie', /EGG_SESS=.*?;/); yield agent.get('/get') - .expect(200) - .expect({ foo: 'bar' }); + .expect(200) + .expect({ foo: 'bar' }); app.sessionStore = null; yield agent.get('/get') - .expect(200) - .expect({}); + .expect(200) + .expect({}); }); }); [ 'cookie-session', 'memory-session', + 'memory-session-generator', 'redis-session', ].forEach(name => { describe(name, () => { @@ -75,85 +76,85 @@ describe('test/app/middlewares/session.test.js', () => { it('should get empty session and do not set cookie when session not populated', function* () { yield agent - .get('/get') - .expect(200) - .expect({}) - .expect(res => { - assert(!res.header['set-cookie'].join('').match(/EGG_SESS/)); - }); + .get('/get') + .expect(200) + .expect({}) + .expect(res => { + assert(!res.header['set-cookie'].join('').match(/EGG_SESS/)); + }); }); it('should ctx.session= change the session', function* () { yield agent - .get('/set?foo=bar') - .expect(200) - .expect({ foo: 'bar' }) - .expect('set-cookie', /EGG_SESS=.*?;/); + .get('/set?foo=bar') + .expect(200) + .expect({ foo: 'bar' }) + .expect('set-cookie', /EGG_SESS=.*?;/); }); it('should ctx.session.key= change the session', function* () { yield agent - .get('/set?key=foo&foo=bar') - .expect(200) - .expect({ key: 'foo', foo: 'bar' }) - .expect('set-cookie', /EGG_SESS=.*?;/); + .get('/set?key=foo&foo=bar') + .expect(200) + .expect({ key: 'foo', foo: 'bar' }) + .expect('set-cookie', /EGG_SESS=.*?;/); yield agent - .get('/setKey?key=bar') - .expect(200) - .expect({ key: 'bar', foo: 'bar' }) - .expect('set-cookie', /EGG_SESS=.*?;/); + .get('/setKey?key=bar') + .expect(200) + .expect({ key: 'bar', foo: 'bar' }) + .expect('set-cookie', /EGG_SESS=.*?;/); }); it('should ctx.session=null remove the session', function* () { yield agent - .get('/set?key=foo&foo=bar') - .expect(200) - .expect({ key: 'foo', foo: 'bar' }) - .expect('set-cookie', /EGG_SESS=.*?;/); + .get('/set?key=foo&foo=bar') + .expect(200) + .expect({ key: 'foo', foo: 'bar' }) + .expect('set-cookie', /EGG_SESS=.*?;/); yield agent - .get('/remove') - .expect(204) - .expect('set-cookie', /EGG_SESS=;/); + .get('/remove') + .expect(204) + .expect('set-cookie', /EGG_SESS=;/); yield agent - .get('/get') - .expect(200) - .expect({}); + .get('/get') + .expect(200) + .expect({}); }); it('should ctx.session.maxAge= change maxAge', function* () { yield agent - .get('/set?key=foo&foo=bar') - .expect(200) - .expect({ key: 'foo', foo: 'bar' }) - .expect('set-cookie', /EGG_SESS=.*?;/); + .get('/set?key=foo&foo=bar') + .expect(200) + .expect({ key: 'foo', foo: 'bar' }) + .expect('set-cookie', /EGG_SESS=.*?;/); let cookie; yield agent - .get('/maxAge?maxAge=100') - .expect(200) - .expect({ key: 'foo', foo: 'bar' }) - .expect(res => { - cookie = res.headers['set-cookie'].join(';'); - assert(cookie.match(/EGG_SESS=.*?;/)); - assert(cookie.match(/expires=/)); - }); + .get('/maxAge?maxAge=100') + .expect(200) + .expect({ key: 'foo', foo: 'bar' }) + .expect(res => { + cookie = res.headers['set-cookie'].join(';'); + assert(cookie.match(/EGG_SESS=.*?;/)); + assert(cookie.match(/expires=/)); + }); yield sleep(200); yield agent - .get('/get') - .expect(200) - .expect({}); + .get('/get') + .expect(200) + .expect({}); yield request(app.callback()) - .get('/get') - .set('cookie', cookie) - .expect(200) - .expect({}); + .get('/get') + .set('cookie', cookie) + .expect(200) + .expect({}); }); }); }); diff --git a/test/fixtures/memory-session-generator/app.js b/test/fixtures/memory-session-generator/app.js new file mode 100644 index 0000000..665adf3 --- /dev/null +++ b/test/fixtures/memory-session-generator/app.js @@ -0,0 +1,19 @@ +'use strict'; + +const sessions = {}; + +module.exports = app => { + app.sessionStore = { + * get(key) { + return sessions[key]; + }, + + * set(key, value) { + sessions[key] = value; + }, + + * destroy(key) { + sessions[key] = undefined; + }, + }; +}; diff --git a/test/fixtures/memory-session-generator/app/controller/home.js b/test/fixtures/memory-session-generator/app/controller/home.js new file mode 100644 index 0000000..b122fac --- /dev/null +++ b/test/fixtures/memory-session-generator/app/controller/home.js @@ -0,0 +1,25 @@ +'use strict'; + +exports.get = function* (ctx) { + ctx.body = ctx.session; +}; + +exports.set = function* (ctx) { + ctx.session = ctx.query; + ctx.body = ctx.session; +}; + +exports.setKey = function* (ctx) { + ctx.session.key = ctx.query.key; + ctx.body = ctx.session; +}; + +exports.remove = function* (ctx) { + ctx.session = null; + ctx.body = ctx.session; +}; + +exports.maxAge = function* (ctx) { + ctx.session.maxAge = Number(this.query.maxAge); + ctx.body = ctx.session; +}; diff --git a/test/fixtures/memory-session-generator/app/router.js b/test/fixtures/memory-session-generator/app/router.js new file mode 100644 index 0000000..d5938ed --- /dev/null +++ b/test/fixtures/memory-session-generator/app/router.js @@ -0,0 +1,9 @@ +'use strict'; + +module.exports = function(app) { + app.get('/get', 'home.get'); + app.get('/set', 'home.set'); + app.get('/setKey', 'home.setKey'); + app.get('/remove', 'home.remove'); + app.get('/maxAge', 'home.maxAge'); +}; diff --git a/test/fixtures/memory-session-generator/config/config.default.js b/test/fixtures/memory-session-generator/config/config.default.js new file mode 100644 index 0000000..5a194a1 --- /dev/null +++ b/test/fixtures/memory-session-generator/config/config.default.js @@ -0,0 +1,3 @@ +'use strict'; + +exports.keys = 'keys'; diff --git a/test/fixtures/memory-session-generator/package.json b/test/fixtures/memory-session-generator/package.json new file mode 100644 index 0000000..97974c3 --- /dev/null +++ b/test/fixtures/memory-session-generator/package.json @@ -0,0 +1,3 @@ +{ + "name": "memory-session-generator" +} diff --git a/test/fixtures/memory-session/app.js b/test/fixtures/memory-session/app.js index 665adf3..6597abd 100644 --- a/test/fixtures/memory-session/app.js +++ b/test/fixtures/memory-session/app.js @@ -4,15 +4,15 @@ const sessions = {}; module.exports = app => { app.sessionStore = { - * get(key) { + async get(key) { return sessions[key]; }, - * set(key, value) { + async set(key, value) { sessions[key] = value; }, - * destroy(key) { + async destroy(key) { sessions[key] = undefined; }, }; diff --git a/test/fixtures/memory-session/app/controller/home.js b/test/fixtures/memory-session/app/controller/home.js index b122fac..c1a41a9 100644 --- a/test/fixtures/memory-session/app/controller/home.js +++ b/test/fixtures/memory-session/app/controller/home.js @@ -1,25 +1,25 @@ 'use strict'; -exports.get = function* (ctx) { +exports.get = async ctx => { ctx.body = ctx.session; }; -exports.set = function* (ctx) { +exports.set = async ctx => { ctx.session = ctx.query; ctx.body = ctx.session; }; -exports.setKey = function* (ctx) { +exports.setKey = async ctx => { ctx.session.key = ctx.query.key; ctx.body = ctx.session; }; -exports.remove = function* (ctx) { +exports.remove = async ctx => { ctx.session = null; ctx.body = ctx.session; }; -exports.maxAge = function* (ctx) { - ctx.session.maxAge = Number(this.query.maxAge); +exports.maxAge = async ctx => { + ctx.session.maxAge = Number(ctx.query.maxAge); ctx.body = ctx.session; }; From 882049e75949f8ae281ba396a45431b1c127538d Mon Sep 17 00:00:00 2001 From: dead-horse Date: Thu, 9 Nov 2017 14:08:07 +0800 Subject: [PATCH 03/23] Release 3.0.0 --- History.md | 6 ++++++ package.json | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/History.md b/History.md index 90fe2d2..c44ece7 100644 --- a/History.md +++ b/History.md @@ -1,4 +1,10 @@ +3.0.0 / 2017-11-09 +================== + +**others** + * [[`38e901b`](http://github.com/eggjs/egg-session/commit/38e901ba06373647074530acdaa72f01d33551a7)] - refactor: upgrade koa-session, support egg2. [BREAKING CHANGE] (#10) (Yiyu He <>) + 2.1.1 / 2017-06-04 ================== diff --git a/package.json b/package.json index 24f32f1..97a3127 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "egg-session", - "version": "2.1.1", + "version": "3.0.0", "description": "session plugin for egg", "eggPlugin": { "name": "session" From b487d2c32f0379b71cb85ef00c2db80226a5e0a1 Mon Sep 17 00:00:00 2001 From: dead-horse Date: Thu, 9 Nov 2017 14:14:06 +0800 Subject: [PATCH 04/23] docs: update readme to async function --- README.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 9c4ddce..2dd108c 100644 --- a/README.md +++ b/README.md @@ -76,22 +76,22 @@ For example, if you want to store session in redis, you must: // session store must have 3 methods // define sessionStore in `app.js` so you can access `app.redis` app.sessionStore = { - * get(key) { - const res = yield app.redis.get(key); + async get(key) { + const res = await app.redis.get(key); if (!res) return null; return JSON.parse(res); }, - * set(key, value, maxAge) { + async set(key, value, maxAge) { // maxAge not present means session cookies // we can't exactly know the maxAge and just set an appropriate value like one day if (!maxAge) maxAge = 24 * 60 * 60 * 1000; value = JSON.stringify(value); - yield app.redis.set(key, value, 'PX', maxAge); + await app.redis.set(key, value, 'PX', maxAge); }, - * destroy(key) { - yield app.redis.del(key); + async destroy(key) { + await app.redis.del(key); }, }; @@ -100,9 +100,9 @@ For example, if you want to store session in redis, you must: // constructor(app) { // this.app = app; // } - // * get() {} - // * set() {} - // * destroy() {} + // async get() {} + // async set() {} + // async destroy() {} // }; }; ``` @@ -122,4 +122,3 @@ Please open an issue [here](https://github.com/eggjs/egg/issues). ## License [MIT](https://github.com/eggjs/egg-session/blob/master/LICENSE) - From c47087c88efffd5fdfbaefc5ad2704eec8060dee Mon Sep 17 00:00:00 2001 From: Yiyu He Date: Tue, 9 Jan 2018 18:55:03 +0800 Subject: [PATCH 05/23] feat: listen session events and warn (#11) --- app.js | 11 +++++++++++ package.json | 2 +- test/app/middleware/session.test.js | 17 +++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/app.js b/app.js index 2c39c58..efffc5a 100644 --- a/app.js +++ b/app.js @@ -2,4 +2,15 @@ module.exports = function(app) { app.config.coreMiddleware.push('session'); + + // listen on session's events + app.on('session:missed', ({ ctx, key }) => { + ctx.coreLogger.warn('[session][missed] key(%s)', key); + }); + app.on('session:expired', ({ ctx, key, value }) => { + ctx.coreLogger.warn('[session][expired] key(%s) value(%j)', key, value); + }); + app.on('session:invalid', ({ ctx, key, value }) => { + ctx.coreLogger.warn('[session][invalid] key(%s) value(%j)', key, value); + }); }; diff --git a/package.json b/package.json index 97a3127..3e232e4 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "cookie" ], "dependencies": { - "koa-session": "^5.5.0" + "koa-session": "^5.7.0" }, "devDependencies": { "autod": "^2.10.1", diff --git a/test/app/middleware/session.test.js b/test/app/middleware/session.test.js index cbaa2a1..1ee8203 100644 --- a/test/app/middleware/session.test.js +++ b/test/app/middleware/session.test.js @@ -74,6 +74,23 @@ describe('test/app/middlewares/session.test.js', () => { }); after(() => app.close()); + if (name === 'redis-session') { + it('should get with ', function* () { + yield agent + .get('/set?foo=bar') + .expect(200) + .expect({ foo: 'bar' }) + .expect('set-cookie', /EGG_SESS=.*?;/); + + mm.empty(app.redis, 'get'); + + yield agent + .get('/get') + .expect(200) + .expect({}); + }); + } + it('should get empty session and do not set cookie when session not populated', function* () { yield agent .get('/get') From 0bb21774cafdb40e87f336a40ba19cd69a330b4b Mon Sep 17 00:00:00 2001 From: dead-horse Date: Tue, 9 Jan 2018 18:55:31 +0800 Subject: [PATCH 06/23] Release 3.1.0 --- History.md | 9 +++++++++ package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/History.md b/History.md index c44ece7..fb399d2 100644 --- a/History.md +++ b/History.md @@ -1,4 +1,13 @@ +3.1.0 / 2018-01-09 +================== + +**features** + * [[`e34fd6e`](http://github.com/eggjs/egg-session/commit/e34fd6e43e9ce933e5a6cb013b37af5f2f959768)] - feat: listen session events and warn (#11) (Yiyu He <>) + +**others** + * [[`08fd920`](http://github.com/eggjs/egg-session/commit/08fd920cd85cb1c528b74f00e9d2605fbd2e0c86)] - docs: update readme to async function (dead-horse <>) + 3.0.0 / 2017-11-09 ================== diff --git a/package.json b/package.json index 3e232e4..9aa8783 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "egg-session", - "version": "3.0.0", + "version": "3.1.0", "description": "session plugin for egg", "eggPlugin": { "name": "session" From 452809f5db502ee46b7ab3aaa3b68659f5487fb7 Mon Sep 17 00:00:00 2001 From: supperchong <2267805901@qq.com> Date: Thu, 28 Feb 2019 12:46:07 +0800 Subject: [PATCH 07/23] doc: fix miss backticks (#12) --- app/extend/application.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/extend/application.js b/app/extend/application.js index d54eede..c647f57 100644 --- a/app/extend/application.js +++ b/app/extend/application.js @@ -20,7 +20,7 @@ module.exports = { * * set() {}, * * destroy() {}, * } - * + * ``` * @param {Class|Object} store session store class or instance */ set sessionStore(store) { From 9c8bdf1571bf218c46cdaa01f20a629218be253c Mon Sep 17 00:00:00 2001 From: Yiyu He Date: Sun, 28 Apr 2019 20:36:43 +0800 Subject: [PATCH 08/23] feat: warn if httpOnly set to false (#13) --- app.js | 3 +++ test/app/middleware/session.test.js | 9 +++++++ .../app/controller/home.js | 25 +++++++++++++++++++ .../httponly-false-session/app/router.js | 9 +++++++ .../config/config.default.js | 6 +++++ .../httponly-false-session/package.json | 3 +++ 6 files changed, 55 insertions(+) create mode 100644 test/fixtures/httponly-false-session/app/controller/home.js create mode 100644 test/fixtures/httponly-false-session/app/router.js create mode 100644 test/fixtures/httponly-false-session/config/config.default.js create mode 100644 test/fixtures/httponly-false-session/package.json diff --git a/app.js b/app.js index efffc5a..91da4b6 100644 --- a/app.js +++ b/app.js @@ -1,6 +1,9 @@ 'use strict'; module.exports = function(app) { + if (!app.config.session.httpOnly) { + app.logger.warn('[egg-session]: please set `config.session.httpOnly` to true. It is very dangerous if session can read by client JavaScript.'); + } app.config.coreMiddleware.push('session'); // listen on session's events diff --git a/test/app/middleware/session.test.js b/test/app/middleware/session.test.js index 1ee8203..21a2c1a 100644 --- a/test/app/middleware/session.test.js +++ b/test/app/middleware/session.test.js @@ -55,6 +55,15 @@ describe('test/app/middlewares/session.test.js', () => { }); }); + describe('httpOnly', () => { + it('should warn when httponly false', function* () { + app = mm.app({ baseDir: 'httponly-false-session' }); + yield app.ready(); + app.expectLog('[egg-session]: please set `config.session.httpOnly` to true. It is very dangerous if session can read by client JavaScript.'); + yield app.close(); + }); + }); + [ 'cookie-session', 'memory-session', diff --git a/test/fixtures/httponly-false-session/app/controller/home.js b/test/fixtures/httponly-false-session/app/controller/home.js new file mode 100644 index 0000000..b122fac --- /dev/null +++ b/test/fixtures/httponly-false-session/app/controller/home.js @@ -0,0 +1,25 @@ +'use strict'; + +exports.get = function* (ctx) { + ctx.body = ctx.session; +}; + +exports.set = function* (ctx) { + ctx.session = ctx.query; + ctx.body = ctx.session; +}; + +exports.setKey = function* (ctx) { + ctx.session.key = ctx.query.key; + ctx.body = ctx.session; +}; + +exports.remove = function* (ctx) { + ctx.session = null; + ctx.body = ctx.session; +}; + +exports.maxAge = function* (ctx) { + ctx.session.maxAge = Number(this.query.maxAge); + ctx.body = ctx.session; +}; diff --git a/test/fixtures/httponly-false-session/app/router.js b/test/fixtures/httponly-false-session/app/router.js new file mode 100644 index 0000000..d5938ed --- /dev/null +++ b/test/fixtures/httponly-false-session/app/router.js @@ -0,0 +1,9 @@ +'use strict'; + +module.exports = function(app) { + app.get('/get', 'home.get'); + app.get('/set', 'home.set'); + app.get('/setKey', 'home.setKey'); + app.get('/remove', 'home.remove'); + app.get('/maxAge', 'home.maxAge'); +}; diff --git a/test/fixtures/httponly-false-session/config/config.default.js b/test/fixtures/httponly-false-session/config/config.default.js new file mode 100644 index 0000000..d237c77 --- /dev/null +++ b/test/fixtures/httponly-false-session/config/config.default.js @@ -0,0 +1,6 @@ +'use strict'; + +exports.keys = 'keys'; +exports.session = { + httpOnly: false, +}; diff --git a/test/fixtures/httponly-false-session/package.json b/test/fixtures/httponly-false-session/package.json new file mode 100644 index 0000000..9f1ec46 --- /dev/null +++ b/test/fixtures/httponly-false-session/package.json @@ -0,0 +1,3 @@ +{ + "name": "httponly-false-session" +} From 3281b992438fadef1af6f4a122d27a0b7e896545 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?TZ=20=7C=20=E5=A4=A9=E7=8C=AA?= Date: Thu, 24 Oct 2019 11:13:49 +0800 Subject: [PATCH 09/23] chore: update travis --- .travis.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0458ab9..679b83d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,12 +2,13 @@ sudo: false language: node_js node_js: - '8' - - '9' + - '10' + - '12' +before_install: + - npm i npminstall -g install: - - npm i npminstall && npminstall + - npminstall script: - npm run ci after_script: - npminstall codecov && codecov -services: - - redis-server From d3a57dd2d179d695afd94438b46c50e7228a083c Mon Sep 17 00:00:00 2001 From: fengmk2 Date: Sat, 1 Feb 2020 20:25:00 +0800 Subject: [PATCH 10/23] test: add sameSite=none test case (#14) --- .travis.yml | 2 ++ config/config.default.js | 1 + package.json | 2 +- test/app/middleware/session.test.js | 26 +++++++++++++++++++ .../app/controller/home.js | 10 +++++++ .../samesite-none-session/app/router.js | 6 +++++ .../config/config.default.js | 6 +++++ .../samesite-none-session/package.json | 3 +++ 8 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 test/fixtures/samesite-none-session/app/controller/home.js create mode 100644 test/fixtures/samesite-none-session/app/router.js create mode 100644 test/fixtures/samesite-none-session/config/config.default.js create mode 100644 test/fixtures/samesite-none-session/package.json diff --git a/.travis.yml b/.travis.yml index 679b83d..a781294 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,3 +12,5 @@ script: - npm run ci after_script: - npminstall codecov && codecov +services: + - redis-server diff --git a/config/config.default.js b/config/config.default.js index b32aee9..fca7223 100644 --- a/config/config.default.js +++ b/config/config.default.js @@ -5,4 +5,5 @@ exports.session = { key: 'EGG_SESS', httpOnly: true, encrypt: true, + // sameSite: null, }; diff --git a/package.json b/package.json index 9aa8783..3ec7aef 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "autod": "autod" }, "ci": { - "version": "8, 9", + "version": "8, 10, 12", "services": "redis-server", "type": "travis" }, diff --git a/test/app/middleware/session.test.js b/test/app/middleware/session.test.js index 21a2c1a..110c533 100644 --- a/test/app/middleware/session.test.js +++ b/test/app/middleware/session.test.js @@ -41,6 +41,10 @@ describe('test/app/middlewares/session.test.js', () => { .get('/set?foo=bar') .expect(200) .expect({ foo: 'bar' }) + .expect(res => { + const cookie = res.headers['set-cookie'].join('|'); + assert(!cookie.includes('; samesite=none;')); + }) .expect('set-cookie', /EGG_SESS=.*?;/); yield agent.get('/get') @@ -64,6 +68,28 @@ describe('test/app/middlewares/session.test.js', () => { }); }); + describe('sameSite', () => { + before(() => { + app = mm.app({ baseDir: 'samesite-none-session' }); + return app.ready(); + }); + beforeEach(() => { + agent = request.agent(app.callback()); + }); + after(() => app.close()); + + it('should work with sameSite=none', async () => { + await agent + .get('/set?foo=bar') + .expect(200) + .expect({ foo: 'bar' }) + .expect(res => { + const cookie = res.headers['set-cookie'].join('|'); + assert(cookie.includes('; samesite=none;')); + }); + }); + }); + [ 'cookie-session', 'memory-session', diff --git a/test/fixtures/samesite-none-session/app/controller/home.js b/test/fixtures/samesite-none-session/app/controller/home.js new file mode 100644 index 0000000..3707362 --- /dev/null +++ b/test/fixtures/samesite-none-session/app/controller/home.js @@ -0,0 +1,10 @@ +'use strict'; + +exports.get = function* (ctx) { + ctx.body = ctx.session; +}; + +exports.set = function* (ctx) { + ctx.session = ctx.query; + ctx.body = ctx.session; +}; diff --git a/test/fixtures/samesite-none-session/app/router.js b/test/fixtures/samesite-none-session/app/router.js new file mode 100644 index 0000000..1901a07 --- /dev/null +++ b/test/fixtures/samesite-none-session/app/router.js @@ -0,0 +1,6 @@ +'use strict'; + +module.exports = function(app) { + app.get('/get', 'home.get'); + app.get('/set', 'home.set'); +}; diff --git a/test/fixtures/samesite-none-session/config/config.default.js b/test/fixtures/samesite-none-session/config/config.default.js new file mode 100644 index 0000000..8c8e2d5 --- /dev/null +++ b/test/fixtures/samesite-none-session/config/config.default.js @@ -0,0 +1,6 @@ +'use strict'; + +exports.keys = 'keys'; +exports.session = { + sameSite: 'none', +}; diff --git a/test/fixtures/samesite-none-session/package.json b/test/fixtures/samesite-none-session/package.json new file mode 100644 index 0000000..ab394c7 --- /dev/null +++ b/test/fixtures/samesite-none-session/package.json @@ -0,0 +1,3 @@ +{ + "name": "samesite-none-session" +} From 792c61f4b6c98a8899264cc99318de18452cf044 Mon Sep 17 00:00:00 2001 From: Yiyu He Date: Tue, 12 May 2020 14:35:17 +0800 Subject: [PATCH 11/23] deps: koa-session@6 (#15) --- .travis.yml | 2 +- package.json | 2 +- test/app/middleware/session.test.js | 2 ++ test/fixtures/samesite-none-session/config/config.default.js | 2 ++ 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index a781294..11cf92c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ -sudo: false + language: node_js node_js: - '8' diff --git a/package.json b/package.json index 3ec7aef..7b5d2b6 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "cookie" ], "dependencies": { - "koa-session": "^5.7.0" + "koa-session": "^6.0.0" }, "devDependencies": { "autod": "^2.10.1", diff --git a/test/app/middleware/session.test.js b/test/app/middleware/session.test.js index 110c533..b7edbbc 100644 --- a/test/app/middleware/session.test.js +++ b/test/app/middleware/session.test.js @@ -81,6 +81,8 @@ describe('test/app/middlewares/session.test.js', () => { it('should work with sameSite=none', async () => { await agent .get('/set?foo=bar') + .set('user-agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36') + .set('x-forwarded-proto', 'https') .expect(200) .expect({ foo: 'bar' }) .expect(res => { diff --git a/test/fixtures/samesite-none-session/config/config.default.js b/test/fixtures/samesite-none-session/config/config.default.js index 8c8e2d5..21ada81 100644 --- a/test/fixtures/samesite-none-session/config/config.default.js +++ b/test/fixtures/samesite-none-session/config/config.default.js @@ -4,3 +4,5 @@ exports.keys = 'keys'; exports.session = { sameSite: 'none', }; + +exports.proxy = true; From 8fc59baf5a8b967d15f5188c3d85c747d904310a Mon Sep 17 00:00:00 2001 From: dead-horse Date: Tue, 12 May 2020 14:41:36 +0800 Subject: [PATCH 12/23] Release 3.2.0 --- History.md | 12 ++++++++++++ package.json | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/History.md b/History.md index fb399d2..d4c5616 100644 --- a/History.md +++ b/History.md @@ -1,4 +1,16 @@ +3.2.0 / 2020-05-12 +================== + +**features** + * [[`39629ab`](http://github.com/eggjs/egg-session/commit/39629abe1c22ee963f80ab69c18a94c3a3f81cd6)] - feat: warn if httpOnly set to false (#13) (Yiyu He <>) + +**others** + * [[`c0d3cdc`](http://github.com/eggjs/egg-session/commit/c0d3cdc23b9138cecb9d30f8e523bdd593e009fb)] - deps: koa-session@6 (#15) (Yiyu He <>) + * [[`75c8ee6`](http://github.com/eggjs/egg-session/commit/75c8ee6c4143362edced399d66c11834bc00ae5f)] - test: add sameSite=none test case (#14) (fengmk2 <>) + * [[`c9865a7`](http://github.com/eggjs/egg-session/commit/c9865a7e05db773a1a37c296f2170e6ffa899761)] - chore: update travis (TZ | 天猪 <>) + * [[`3168fb7`](http://github.com/eggjs/egg-session/commit/3168fb78877dbbc91c4d2df1ed762f9f5684f52d)] - doc: fix miss backticks (#12) (supperchong <<2267805901@qq.com>>) + 3.1.0 / 2018-01-09 ================== diff --git a/package.json b/package.json index 7b5d2b6..a725b96 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "egg-session", - "version": "3.1.0", + "version": "3.2.0", "description": "session plugin for egg", "eggPlugin": { "name": "session" From d6dd5bbcac8839dc80287d5355306a18673c6f02 Mon Sep 17 00:00:00 2001 From: Yiyu He Date: Sun, 28 Jun 2020 13:42:23 +0800 Subject: [PATCH 13/23] test: add test case for session maxAge (#16) --- test/app/middleware/session.test.js | 38 +++++++++++++++++++ .../app/controller/home.js | 25 ++++++++++++ .../session-maxage-session/app/router.js | 9 +++++ .../config/config.default.js | 6 +++ .../session-maxage-session/package.json | 3 ++ 5 files changed, 81 insertions(+) create mode 100644 test/fixtures/session-maxage-session/app/controller/home.js create mode 100644 test/fixtures/session-maxage-session/app/router.js create mode 100644 test/fixtures/session-maxage-session/config/config.default.js create mode 100644 test/fixtures/session-maxage-session/package.json diff --git a/test/app/middleware/session.test.js b/test/app/middleware/session.test.js index b7edbbc..6b49df1 100644 --- a/test/app/middleware/session.test.js +++ b/test/app/middleware/session.test.js @@ -92,6 +92,43 @@ describe('test/app/middlewares/session.test.js', () => { }); }); + describe('session maxage', () => { + before(() => { + app = mm.app({ baseDir: 'session-maxage-session' }); + return app.ready(); + }); + beforeEach(() => { + agent = request.agent(app.callback()); + }); + after(() => app.close()); + + it('should work with maxage=ession', async () => { + await agent + .get('/set?foo=bar') + .set('user-agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36') + .set('x-forwarded-proto', 'https') + .expect(200) + .expect({ foo: 'bar' }) + .expect(res => { + const cookie = res.headers['set-cookie'].join('|'); + assert(!cookie.includes('expires')); + assert(!cookie.includes('max-age')); + }); + }); + + it('should ctx.session.maxAge=session work', async () => { + await agent + .get('/maxAge?maxAge=session') + .expect(200) + .expect(res => { + const cookie = res.headers['set-cookie'].join(';'); + assert(cookie.match(/EGG_SESS=.*?;/)); + assert(!cookie.includes('expires')); + assert(!cookie.includes('max-age')); + }); + }); + }); + [ 'cookie-session', 'memory-session', @@ -195,6 +232,7 @@ describe('test/app/middlewares/session.test.js', () => { cookie = res.headers['set-cookie'].join(';'); assert(cookie.match(/EGG_SESS=.*?;/)); assert(cookie.match(/expires=/)); + assert(cookie.match(/max-age=/)); }); yield sleep(200); diff --git a/test/fixtures/session-maxage-session/app/controller/home.js b/test/fixtures/session-maxage-session/app/controller/home.js new file mode 100644 index 0000000..1b97026 --- /dev/null +++ b/test/fixtures/session-maxage-session/app/controller/home.js @@ -0,0 +1,25 @@ +'use strict'; + +exports.get = function* (ctx) { + ctx.body = ctx.session; +}; + +exports.set = function* (ctx) { + ctx.session = ctx.query; + ctx.body = ctx.session; +}; + +exports.setKey = function* (ctx) { + ctx.session.key = ctx.query.key; + ctx.body = ctx.session; +}; + +exports.remove = function* (ctx) { + ctx.session = null; + ctx.body = ctx.session; +}; + +exports.maxAge = function* (ctx) { + ctx.session.maxAge = this.query.maxAge; + ctx.body = ctx.session; +}; diff --git a/test/fixtures/session-maxage-session/app/router.js b/test/fixtures/session-maxage-session/app/router.js new file mode 100644 index 0000000..d5938ed --- /dev/null +++ b/test/fixtures/session-maxage-session/app/router.js @@ -0,0 +1,9 @@ +'use strict'; + +module.exports = function(app) { + app.get('/get', 'home.get'); + app.get('/set', 'home.set'); + app.get('/setKey', 'home.setKey'); + app.get('/remove', 'home.remove'); + app.get('/maxAge', 'home.maxAge'); +}; diff --git a/test/fixtures/session-maxage-session/config/config.default.js b/test/fixtures/session-maxage-session/config/config.default.js new file mode 100644 index 0000000..aa6ff99 --- /dev/null +++ b/test/fixtures/session-maxage-session/config/config.default.js @@ -0,0 +1,6 @@ +'use strict'; + +exports.keys = 'keys'; +exports.session = { + maxAge: 'session', +}; diff --git a/test/fixtures/session-maxage-session/package.json b/test/fixtures/session-maxage-session/package.json new file mode 100644 index 0000000..9f1ec46 --- /dev/null +++ b/test/fixtures/session-maxage-session/package.json @@ -0,0 +1,3 @@ +{ + "name": "httponly-false-session" +} From 889a571402af5e5062b5f787a88270b3ab4b8ff2 Mon Sep 17 00:00:00 2001 From: clChenLiang Date: Thu, 4 Mar 2021 12:08:32 +0800 Subject: [PATCH 14/23] feat: as default not to log the session val --- app.js | 4 ++-- config/config.default.js | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app.js b/app.js index 91da4b6..30d1269 100644 --- a/app.js +++ b/app.js @@ -11,9 +11,9 @@ module.exports = function(app) { ctx.coreLogger.warn('[session][missed] key(%s)', key); }); app.on('session:expired', ({ ctx, key, value }) => { - ctx.coreLogger.warn('[session][expired] key(%s) value(%j)', key, value); + ctx.coreLogger.warn('[session][expired] key(%s) value(%j)', key, app.config.logValue ? value : ''); }); app.on('session:invalid', ({ ctx, key, value }) => { - ctx.coreLogger.warn('[session][invalid] key(%s) value(%j)', key, value); + ctx.coreLogger.warn('[session][invalid] key(%s) value(%j)', key, app.config.logValue ? value : ''); }); }; diff --git a/config/config.default.js b/config/config.default.js index fca7223..a6ebe14 100644 --- a/config/config.default.js +++ b/config/config.default.js @@ -6,4 +6,5 @@ exports.session = { httpOnly: true, encrypt: true, // sameSite: null, + logValue: false, }; From 7b15ef5a79ee2cd72cb9406ec397ab7dcb73a1fc Mon Sep 17 00:00:00 2001 From: clChenLiang Date: Thu, 4 Mar 2021 17:38:07 +0800 Subject: [PATCH 15/23] fix: add break changes --- app.js | 4 ++-- config/config.default.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app.js b/app.js index 30d1269..d40c00a 100644 --- a/app.js +++ b/app.js @@ -11,9 +11,9 @@ module.exports = function(app) { ctx.coreLogger.warn('[session][missed] key(%s)', key); }); app.on('session:expired', ({ ctx, key, value }) => { - ctx.coreLogger.warn('[session][expired] key(%s) value(%j)', key, app.config.logValue ? value : ''); + ctx.coreLogger.warn('[session][expired] key(%s) value(%j)', key, app.config.session.logValue ? value : ''); }); app.on('session:invalid', ({ ctx, key, value }) => { - ctx.coreLogger.warn('[session][invalid] key(%s) value(%j)', key, app.config.logValue ? value : ''); + ctx.coreLogger.warn('[session][invalid] key(%s) value(%j)', key, app.config.session.logValue ? value : ''); }); }; diff --git a/config/config.default.js b/config/config.default.js index a6ebe14..f445487 100644 --- a/config/config.default.js +++ b/config/config.default.js @@ -6,5 +6,5 @@ exports.session = { httpOnly: true, encrypt: true, // sameSite: null, - logValue: false, + logValue: true, }; From b1dac1e51c70c7016c6510b8c83608aeb15ccf82 Mon Sep 17 00:00:00 2001 From: clChenLiang Date: Fri, 12 Mar 2021 14:34:16 +0800 Subject: [PATCH 16/23] feat: ci --- test/app/middleware/session.test.js | 54 +++++++++++++++++++ .../app/controller/home.js | 25 +++++++++ .../logValue-false-session/app/router.js | 9 ++++ .../config/config.default.js | 6 +++ .../logValue-false-session/package.json | 3 ++ 5 files changed, 97 insertions(+) create mode 100644 test/fixtures/logValue-false-session/app/controller/home.js create mode 100644 test/fixtures/logValue-false-session/app/router.js create mode 100644 test/fixtures/logValue-false-session/config/config.default.js create mode 100644 test/fixtures/logValue-false-session/package.json diff --git a/test/app/middleware/session.test.js b/test/app/middleware/session.test.js index 6b49df1..9c88da0 100644 --- a/test/app/middleware/session.test.js +++ b/test/app/middleware/session.test.js @@ -92,6 +92,60 @@ describe('test/app/middlewares/session.test.js', () => { }); }); + describe('logValue', () => { + before(() => { + app = mm.app({ baseDir: 'logValue-false-session' }); + return app.ready(); + }); + beforeEach(() => { + agent = request.agent(app.callback()); + app.mockLog(); + }); + after(() => app.close()); + + it('when logValue is true, should log the session value', async () => { + let cookie; + mm(app.config.session, 'logValue', true); + + await agent + .get('/maxAge?maxAge=100') + .expect(200) + .expect(res => { + cookie = res.headers['set-cookie'].join(';'); + }); + + await sleep(200); + + await request(app.callback()) + .get('/get') + .set('cookie', cookie) + .expect(200) + .expect({}); + app.notExpectLog(`[session][expired] key(undefined) value("")`, 'coreLogger'); + }); + + it('when logValue is false, should not log the session value', async () => { + mm(app.config.session, 'logValue', false); + let cookie; + + await agent + .get('/maxAge?maxAge=100') + .expect(200) + .expect(res => { + cookie = res.headers['set-cookie'].join(';'); + }); + + await sleep(200); + + await request(app.callback()) + .get('/get') + .set('cookie', cookie) + .expect(200) + .expect({}); + app.expectLog(`[session][expired] key(undefined) value("")`, 'coreLogger'); + }); + }); + describe('session maxage', () => { before(() => { app = mm.app({ baseDir: 'session-maxage-session' }); diff --git a/test/fixtures/logValue-false-session/app/controller/home.js b/test/fixtures/logValue-false-session/app/controller/home.js new file mode 100644 index 0000000..b122fac --- /dev/null +++ b/test/fixtures/logValue-false-session/app/controller/home.js @@ -0,0 +1,25 @@ +'use strict'; + +exports.get = function* (ctx) { + ctx.body = ctx.session; +}; + +exports.set = function* (ctx) { + ctx.session = ctx.query; + ctx.body = ctx.session; +}; + +exports.setKey = function* (ctx) { + ctx.session.key = ctx.query.key; + ctx.body = ctx.session; +}; + +exports.remove = function* (ctx) { + ctx.session = null; + ctx.body = ctx.session; +}; + +exports.maxAge = function* (ctx) { + ctx.session.maxAge = Number(this.query.maxAge); + ctx.body = ctx.session; +}; diff --git a/test/fixtures/logValue-false-session/app/router.js b/test/fixtures/logValue-false-session/app/router.js new file mode 100644 index 0000000..d5938ed --- /dev/null +++ b/test/fixtures/logValue-false-session/app/router.js @@ -0,0 +1,9 @@ +'use strict'; + +module.exports = function(app) { + app.get('/get', 'home.get'); + app.get('/set', 'home.set'); + app.get('/setKey', 'home.setKey'); + app.get('/remove', 'home.remove'); + app.get('/maxAge', 'home.maxAge'); +}; diff --git a/test/fixtures/logValue-false-session/config/config.default.js b/test/fixtures/logValue-false-session/config/config.default.js new file mode 100644 index 0000000..3fad935 --- /dev/null +++ b/test/fixtures/logValue-false-session/config/config.default.js @@ -0,0 +1,6 @@ +'use strict'; + +exports.keys = 'keys'; +exports.session = { + logValue: false, +}; \ No newline at end of file diff --git a/test/fixtures/logValue-false-session/package.json b/test/fixtures/logValue-false-session/package.json new file mode 100644 index 0000000..217cbd6 --- /dev/null +++ b/test/fixtures/logValue-false-session/package.json @@ -0,0 +1,3 @@ +{ + "name": "logvalue-false-session" +} From a5bc34dca279a07487bf0446ef7fa8ec4e0f359b Mon Sep 17 00:00:00 2001 From: clChenLiang Date: Fri, 12 Mar 2021 14:36:12 +0800 Subject: [PATCH 17/23] fix: lint --- test/fixtures/logValue-false-session/config/config.default.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/fixtures/logValue-false-session/config/config.default.js b/test/fixtures/logValue-false-session/config/config.default.js index 3fad935..7aee4cf 100644 --- a/test/fixtures/logValue-false-session/config/config.default.js +++ b/test/fixtures/logValue-false-session/config/config.default.js @@ -3,4 +3,4 @@ exports.keys = 'keys'; exports.session = { logValue: false, -}; \ No newline at end of file +}; From f55daf483439814b9adb4c52ad306cfc3aeb7946 Mon Sep 17 00:00:00 2001 From: clChenLiang Date: Fri, 19 Mar 2021 14:42:51 +0800 Subject: [PATCH 18/23] =?UTF-8?q?doc:=20=E9=85=8D=E7=BD=AE=E9=A1=B9?= =?UTF-8?q?=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 2dd108c..c000f54 100644 --- a/README.md +++ b/README.md @@ -113,6 +113,10 @@ Once you use external session store, session is strong dependent on your externa Support all configurations in [koa-session](https://github.com/koajs/session). +* logValue + +Support not to print the session value when session event trigger log. Default to be true. + [View the default configurations](https://github.com/eggjs/egg-session/blob/master/config/config.default.js) ## Questions & Suggestions From a452a43dbeec4c84e9cfa18f0a2cb9b6ed431299 Mon Sep 17 00:00:00 2001 From: clChenLiang Date: Fri, 19 Mar 2021 14:48:29 +0800 Subject: [PATCH 19/23] =?UTF-8?q?docs:=20=E4=BC=98=E5=8C=96=20github=20?= =?UTF-8?q?=E9=98=85=E8=AF=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index c000f54..bee5196 100644 --- a/README.md +++ b/README.md @@ -115,7 +115,9 @@ Support all configurations in [koa-session](https://github.com/koajs/session). * logValue +``` Support not to print the session value when session event trigger log. Default to be true. +``` [View the default configurations](https://github.com/eggjs/egg-session/blob/master/config/config.default.js) From 86b502154f15ccf4619fb9318ef6930d0330ffe0 Mon Sep 17 00:00:00 2001 From: --global Date: Mon, 22 Mar 2021 23:26:15 +0800 Subject: [PATCH 20/23] fix: lint --- test/app/middleware/session.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/app/middleware/session.test.js b/test/app/middleware/session.test.js index 9c88da0..02fb754 100644 --- a/test/app/middleware/session.test.js +++ b/test/app/middleware/session.test.js @@ -121,7 +121,7 @@ describe('test/app/middlewares/session.test.js', () => { .set('cookie', cookie) .expect(200) .expect({}); - app.notExpectLog(`[session][expired] key(undefined) value("")`, 'coreLogger'); + app.notExpectLog('[session][expired] key(undefined) value("")', 'coreLogger'); }); it('when logValue is false, should not log the session value', async () => { @@ -142,7 +142,7 @@ describe('test/app/middlewares/session.test.js', () => { .set('cookie', cookie) .expect(200) .expect({}); - app.expectLog(`[session][expired] key(undefined) value("")`, 'coreLogger'); + app.expectLog('[session][expired] key(undefined) value("")', 'coreLogger'); }); }); From ac660659212626c0a6037d8804edc36fbbc6a029 Mon Sep 17 00:00:00 2001 From: --global Date: Tue, 23 Mar 2021 08:35:50 +0800 Subject: [PATCH 21/23] =?UTF-8?q?feat:=20mock=20=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/app/middleware/session.test.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/app/middleware/session.test.js b/test/app/middleware/session.test.js index 02fb754..40c719d 100644 --- a/test/app/middleware/session.test.js +++ b/test/app/middleware/session.test.js @@ -105,6 +105,7 @@ describe('test/app/middlewares/session.test.js', () => { it('when logValue is true, should log the session value', async () => { let cookie; + app.mockLog(); mm(app.config.session, 'logValue', true); await agent @@ -126,6 +127,7 @@ describe('test/app/middlewares/session.test.js', () => { it('when logValue is false, should not log the session value', async () => { mm(app.config.session, 'logValue', false); + app.mockLog(); let cookie; await agent From 7b0eadd939542c110edea9595c904827a69c0120 Mon Sep 17 00:00:00 2001 From: --global Date: Tue, 23 Mar 2021 11:17:32 +0800 Subject: [PATCH 22/23] feat: more time for log --- test/app/middleware/session.test.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/app/middleware/session.test.js b/test/app/middleware/session.test.js index 40c719d..af9a48d 100644 --- a/test/app/middleware/session.test.js +++ b/test/app/middleware/session.test.js @@ -144,6 +144,9 @@ describe('test/app/middlewares/session.test.js', () => { .set('cookie', cookie) .expect(200) .expect({}); + + await sleep(1000); + app.expectLog('[session][expired] key(undefined) value("")', 'coreLogger'); }); }); From fba539253a661fa9af8d757a2c1007abb944f8d2 Mon Sep 17 00:00:00 2001 From: --global Date: Tue, 23 Mar 2021 12:05:52 +0800 Subject: [PATCH 23/23] =?UTF-8?q?fix:=20ci=20=E5=A2=9E=E5=8A=A0=20invalid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/app/middleware/session.test.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/test/app/middleware/session.test.js b/test/app/middleware/session.test.js index af9a48d..82f8969 100644 --- a/test/app/middleware/session.test.js +++ b/test/app/middleware/session.test.js @@ -149,6 +149,24 @@ describe('test/app/middlewares/session.test.js', () => { app.expectLog('[session][expired] key(undefined) value("")', 'coreLogger'); }); + + it.only('when logValue is false, valid false, should not log the session value', async () => { + mm(app.config.session, 'logValue', false); + mm(app.config.session, 'valid', () => false); + app.mockLog(); + + await agent + .get('/set?foo=bar') + .expect(200) + .expect({ foo: 'bar' }); + + await agent + .get('/get'); + + await sleep(1000); + + app.expectLog('[session][invalid] key(undefined) value("")', 'coreLogger'); + }); }); describe('session maxage', () => {