Express

Session handling

Implement a session context for requests and use the data in all async execution.

Express middleware

import { AsyncLocalStorage } from "async_hooks";
import crypto from "crypto";

export const asyncLocalStorage = new AsyncLocalStorage();

export enum SessionMapKey {
  SESSION_ID = "sessionId",
  USER_ID = "userId",
}

export function SessionMiddleware(_req, _res, next) {
  const sessionMap = new Map();
  sessionMap.set(SessionMapKey.SESSION_ID, crypto.randomUUID());
  asyncLocalStorage.run(sessionMap, () => {
    next();
  });
}

Access session context

Set entry

Usage

Add middleware to server (or a route)

Use in a log message

Last updated