Introduction to Koa Session
Koa-session is a powerful and easy-to-use middleware for managing sessions in Koa applications. It provides a straightforward API for working with user sessions, making it easier to build secure and scalable web applications. Below, we explore some of the most useful APIs available in koa-session, complete with code snippets to get you started.
Installing Koa-Session
npm install koa-session
Using Koa-Session
First, you’ll need to initialize Koa-session in your Koa application. Here is a simple example of how to set it up:
const Koa = require('koa');
const session = require('koa-session');
const app = new Koa();
app.keys = ['some secret hurr'];
app.use(session(app));
app.use(ctx => {
// count is initialized to 0 if not already set
let n = ctx.session.views || 0;
ctx.session.views = ++n;
ctx.body = `${n} views`;
});
app.listen(3000);
Configuration Options
Koa-session comes with several configuration options that allow you to customize session behavior.
const sessionConfig = {
key: 'koa.sess', // cookie name
maxAge: 86400000, // cookie expiry time in ms (1 day)
autoCommit: true, // automatically commit headers
overwrite: true, // can overwrite or not
httpOnly: true, // cookie is HTTP only
signed: true, // signature
rolling: false, // reset maxAge on every response
renew: false, // renew session when it is nearly expired
};
app.use(session(sessionConfig, app));
Working with Sessions
Setting Session Data
You can set session data by assigning values to the ctx.session
object:
app.use(ctx => {
ctx.session.userId = '12345';
ctx.body = 'Session set';
});
Getting Session Data
Retrieve session data from the ctx.session
object:
app.use(ctx => {
const userId = ctx.session.userId;
ctx.body = `User ID: ${userId}`;
});
Destroying a Session
You can destroy a session by setting ctx.session = null
:
app.use(ctx => {
ctx.session = null;
ctx.body = 'Session destroyed';
});
Advanced Example
Here is a more advanced example that demonstrates how to use some of the koa-session features:
const Koa = require('koa');
const session = require('koa-session');
const Router = require('@koa/router');
const app = new Koa();
const router = new Router();
app.keys = ['super-secret-key'];
const sessionConfig = {
key: 'koa.sess',
maxAge: 86400000,
httpOnly: true,
signed: true,
rolling: true,
renew: true,
};
app.use(session(sessionConfig, app));
router.get('/login', ctx => {
ctx.session.userInfo = { username: 'testUser' };
ctx.body = 'Logged in!';
});
router.get('/profile', ctx => {
if (ctx.session.userInfo) {
ctx.body = `User: ${ctx.session.userInfo.username}`;
} else {
ctx.status = 401;
ctx.body = 'Please log in first';
}
});
router.get('/logout', ctx => {
ctx.session = null;
ctx.body = 'Logged out!';
});
app
.use(router.routes())
.use(router.allowedMethods());
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
This advanced example sets up a login route that stores user information in the session, a profile route that checks if the user is logged in, and a logout route that destroys the session.
With these examples, you should have a good understanding of how to use koa-session to manage user sessions effectively in your Koa applications.
Hash: 413f33c850969d60654fd8a5da31afffbf2a3fd57a78b3cb260698a75254486b