Skip to content

Commit 48f037a

Browse files
committed
lazy evaluation on dynamic cookie options
1 parent bccb59a commit 48f037a

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "koa-session-minimal",
3-
"version": "3.0.0",
3+
"version": "3.0.1",
44
"description": "Minimal implementation of session middleware for Koa 2. Inspired by and compatible with koa-generic-session",
55
"main": "dist/session.js",
66
"scripts": {

src/session.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,24 @@ const cookieOpt = (cookie) => {
2020
}
2121

2222
const deleteSession = (ctx, key, cookie, store, sid) => {
23-
const deleteOption = Object.assign({}, cookie)
24-
delete deleteOption.maxAge
25-
ctx.cookies.set(key, null, deleteOption)
23+
const options = cookie instanceof Function ? cookieOpt(cookie(ctx)) : Object.assign({}, cookie)
24+
delete options.maxAge
25+
ctx.cookies.set(key, null, options)
2626
store.destroy(`${key}:${sid}`)
2727
}
2828

2929
const saveSession = (ctx, key, cookie, store, sid) => {
30-
const ttl = cookie.maxAge > 0 ? cookie.maxAge : ONE_DAY
31-
ctx.cookies.set(key, sid, cookie)
30+
const options = cookie instanceof Function ? cookieOpt(cookie(ctx)) : cookie
31+
const ttl = options.maxAge > 0 ? options.maxAge : ONE_DAY
32+
ctx.cookies.set(key, sid, options)
3233
store.set(`${key}:${sid}`, ctx.session, ttl)
3334
}
3435

3536
module.exports = (options) => {
3637
const opt = options || {}
3738
const key = opt.key || 'koa:sess'
3839
const store = new Store(opt.store || new MemoryStore())
39-
const defaultCookie = opt.cookie instanceof Function ? opt.cookie : cookieOpt(opt.cookie)
40+
const cookie = opt.cookie instanceof Function ? opt.cookie : cookieOpt(opt.cookie)
4041

4142
return async (ctx, next) => { // eslint-disable-line arrow-parens
4243
// initialize session id and data
@@ -64,7 +65,6 @@ module.exports = (options) => {
6465

6566
await next()
6667

67-
const cookie = defaultCookie instanceof Function ? cookieOpt(defaultCookie(ctx)) : defaultCookie
6868
const sessionHasData = ctx.session && Object.keys(ctx.session).length
6969

7070
if (sid !== cookieSid) { // a new session id

0 commit comments

Comments
 (0)