---
title: "Référence d'API — @nodefony/http — session"
source: docs/api/http/session.md
url: https://nodefony.github.io/nodefony-core/docs/api/http/session/
---


[Documentation](../../../) › [Référence d'API](../../) › [`@nodefony/http`](../) › session

> Générée depuis les déclarations de types publiées de `@nodefony/http` **10.0.0-beta.5** : exactement ce que reçoit une application qui l'installe. Cette page n'existe dans aucun dépôt — pour la corriger, on corrige le TSDoc du code.

## `@nodefony/http`

`import { … } from "@nodefony/http"` — 5 symboles.

### Classes (1)

#### `Session`

```ts
class Session implements ISession
```

Session serveur Nodefony — état persistant lié à une identité, indexé par un identifiant **opaque** (porté par le cookie) dans un `ISessionStorage` pluggable (File / Redis / SQL). Modèle BFF : le cookie ne transporte qu'un secret aléatoire, jamais de données ni de JWT.

- `id: string`
- `name: string`
- `status: SessionStatusType`
- `storage: ISessionStorage`
- `manager: SessionsService`
- `saved: boolean`
- `migrated: boolean`
- `readOnly: boolean` — Lecture seule (intent `@UseSession({ readOnly })`) : la session est reprise et lue mais **jamais persistée** — `save` devient un no-op.
- `context?: ContextType`
- `created?: Date`
- `updated?: Date`
- `options: OptionsSessionType`
- `cookieSession: Cookie | null`
- `lifetime?: number`
- `user?: string`
- `strategy: SessionStrategyType`
- `flashBag: FlashBagType` — Sac de messages flash (consommés à la lecture).
- `constructor(name: string, options: OptionsSessionType, manager: SessionsService)`
- `get dirty(): boolean` — Vrai si la session a été mutée sans être encore persistée (dirty-tracking).
- `start(context: ContextType): Promise<this>` — Démarre (ou reprend) la session.
- `create(lifetime: number, id?: string, settingsCookie?: CookieOptionsType): this` — Crée une session neuve : identifiant opaque CSPRNG, cookie, métadonnées.
- `regenerateId(): void` — Régénère l'identifiant (nouveau secret opaque) en conservant l'état courant.
- `save(user?: string): Promise<this>` — Persiste la session **si elle est dirty** (sinon no-op).
- `invalidate(lifetime?: number, id?: string, settingsCookie?: CookieOptionsType): Promise<this>` — Détruit la session courante (storage) et en recrée une neuve (nouvel identifiant + cookie).
- `destroy(cookieDelete?: boolean): Promise<boolean>` — Détruit la session : vide les sacs, supprime l'entrée storage, et (option) efface le cookie.
- `setCookieSession(leftTime: number, options?: CookieOptionsType): Cookie | null`
- `deleteCookieSession(): Cookie | null`
- `isValidSession(_data: ISerializedSession, context: ContextType): boolean`
- `touchIfNeeded(): Promise<void>` — Prolonge l'idle timeout de la session active sur l'activité courante, **de façon throttlée** (1 écriture par tranche d'idle, jamais par requête) et **sans réécrire le blob** (write léger `touch` du st …
- `checkSecureReferer(context: ContextType): boolean`
- `get(key: string): unknown`
- `set(key: string, value: unknown): unknown`
- `getAttributes(): Record<string, unknown>`
- `getMetaBag(key: string): unknown`
- `setMetaBag(key: string, value: unknown): void`
- `getMetas(): MetaBagType`
- `getFlashBag(key: string): unknown`
- `setFlashBag(key: string, value: unknown): unknown`
- `flashBags(): FlashBagType`
- `clearFlashBag(key: string): void`
- `clearFlashBags(): void`
- `serialize(user?: string): ISerializedSession`
- `deSerialize(serialized: ISerializedSession): void`
- `clear(): void` — Réinitialise les trois sacs (attributs, métas, flash) — état vide.
- `getName(): string`
- `setName(name: string): void`
- `checkStatus(): "restart" | boolean`

### Constantes (4)

#### `SESSION_COLUMN_ALIASES`

```ts
const SESSION_COLUMN_ALIASES: Readonly<Record<string, string>>
```

Table d'alias des backends dont le schéma nomme l'identifiant de session `session_id` (SQL comme Mongo) — à passer à `renameOrderFields` (core).

#### `SESSION_DEFAULT_ORDER`

```ts
const SESSION_DEFAULT_ORDER: NonNullable<IPageQuery["order"]>
```

Ordre contractuel appliqué quand le client n'en demande aucun : activité la plus récente d'abord, départagée par identifiant pour rester **déterministe** à horodatage égal (sans quoi une pagination peut sauter ou répéter une ligne entre deux pages).

#### `SESSION_DEFAULT_ORDER_SQL`

```ts
const SESSION_DEFAULT_ORDER_SQL: NonNullable<IPageQuery["order"]>
```

Ordre par défaut des backends dont le schéma nomme l'identifiant `session_id` — `SESSION_DEFAULT_ORDER` déjà traduit.

#### `SESSION_SORTABLE_FIELDS`

```ts
const SESSION_SORTABLE_FIELDS: readonly [ "updatedAt", "createdAt", "user", "id" ]
```

**Le vocabulaire de tri des sessions**, en noms PUBLICS — ceux qu'un client écrit dans l'URL (`?order=updatedAt:DESC`), jamais des noms de colonne.

---

[← Toutes les références d'API](../../)
