Skip to main content
zerotal

Documentation


Documentation / zerotal / session / SessionMiddleware

Class: SessionMiddleware

Defined in: packages/session/src/SessionMiddleware.ts:42

Session middleware — boots the session for every request.

Loads session data from the driver into a fresh SessionManager and attaches it as ctx.session before calling next(), then persists the session (with any mutations) once the final response exists — registered via HttpContext.onResponseReady, so it lands on a response rendered by the exception handler just as it does on a successful one. IDs replaced by SessionManager.regenerate are also destroyed server-side here.

Remarks

Two usage patterns:

Config-driven (recommended)SessionProvider registers the driver from config/session.ts; the middleware resolves it lazily from the container on the first request.

app.use([SessionMiddleware]);

Explicit driver — useful in tests or when you don't use SessionProvider:

app.use([SessionMiddleware.withDriver(new CookieDriver(secret))]);

Throws

SessionDriverMissingError on the first request when no driver was supplied and none is registered in the container.

Extends

Extended by

Constructors

Constructor

new SessionMiddleware(driver?): SessionMiddleware

Defined in: packages/session/src/SessionMiddleware.ts:45

Parameters

driver?

SessionDriver

Returns

SessionMiddleware

Overrides

BaseMiddleware.constructor

Properties

options

protected options: SessionOptions = {}

Defined in: packages/session/src/SessionMiddleware.ts:43

Subclasses must declare this with their default option values. TypeScript enforces this at compile time — forgetting it is a type error.

Overrides

BaseMiddleware.options

Methods

with()

static with<T, Opts>(this, options): () => InstanceType<T>

Defined in: packages/core/src/middleware/BaseMiddleware.ts:48

Returns a zero-arg subclass with the given options deep-merged on top of the subclass defaults, usable directly in app.use([...]).

Type Parameters

T

T extends (...args) => BaseMiddleware<any>

Opts

Opts = T extends (...args) => BaseMiddleware<U> ? U : object

Parameters

this

T

options

Partial<Opts>

Returns

() => InstanceType<T>

Inherited from

BaseMiddleware.with


afterResponse()?

optional afterResponse(ctx): Promise<void>

Defined in: packages/core/src/middleware/BaseMiddleware.ts:70

Parameters

ctx

HttpContext

Returns

Promise<void>

Inherited from

BaseMiddleware.afterResponse


onError()?

optional onError(ctx, error): Promise<void>

Defined in: packages/core/src/middleware/BaseMiddleware.ts:71

Parameters

ctx

HttpContext

error

Error

Returns

Promise<void>

Inherited from

BaseMiddleware.onError


withDriver()

static withDriver(driver): () => SessionMiddleware

Defined in: packages/session/src/SessionMiddleware.ts:62

Build a zero-arg subclass with the given driver baked in, usable directly in app.use([...]) without an anonymous class wrapper.

Parameters

driver

SessionDriver

The session driver the returned middleware will use.

Returns

A constructable middleware class pre-bound to driver.

() => SessionMiddleware

Example

app.use([SessionMiddleware.withDriver(new CookieDriver(secret))]);