koajs / koajs/session

ctx.session.isNew undefined

Open
#165 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
908
Forks
115
PR merge metrics
No merged PRs in 30d

Description

## Example

### dependencies

```json
"dependencies": {
"koa": "^2.6.2",
"koa-session": "^5.10.1"
}
```

### index.js
```js
const session = require('koa-session');
const Koa = require('koa');
const app = new Koa();

app.keys = ['some secret hurr'];

const CONFIG = {
key: 'koa:sess', /** (string) cookie key (default is koa:sess) */
/** (number || 'session') maxAge in ms (default is 1 days) */
/** 'session' will result in a cookie that expires when session/browser is closed */
/** Warning: If a session cookie is stolen, this cookie will never expire */
maxAge: 86400000,
autoCommit: true, /** (boolean) automatically commit headers (default true) */
overwrite: true, /** (boolean) can overwrite or not (default true) */
httpOnly: true, /** (boolean) httpOnly or not (default true) */
signed: true, /** (boolean) signed or not (default true) */
rolling: false, /** (boolean) Force a session identifier cookie to be set on every response. The expiration is reset to the original maxAge, resetting the expiration countdown. (default is false) */
renew: false, /** (boolean) renew session when session is nearly expired, so we can always keep user logged in. (default is false)*/
};

app.use(session(CONFIG, app));
// or if you prefer all default config, just use => app.use(session(app));

app.use(ctx => {
// ignore favicon
if (ctx.path === '/favicon.ico') return;

let n = ctx.session.views || 0;
ctx.session.views = ++n;

// undefined
console.log(ctx.session.isNew)

ctx.body = n + ' views';
});

app.listen(3000);
console.log('listening on port 3000');
```

Contributor guide

Open the contributing guide

Research direction

Start by running the dependency setup and index.js example to reproduce the undefined value at console.log(ctx.session.isNew). Then inspect the session API used by the example and determine whether the completed behavior should expose isNew, with the result reflected in the example or an appropriate test.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
backend
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.