@rudderjs/session 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -4
- package/boost/guidelines.md +97 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +131 -46
- package/dist/index.js.map +1 -1
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -41,11 +41,10 @@ export default {
|
|
|
41
41
|
|
|
42
42
|
```ts
|
|
43
43
|
// bootstrap/providers.ts
|
|
44
|
-
import {
|
|
45
|
-
import configs from '../config/index.js'
|
|
44
|
+
import { SessionProvider } from '@rudderjs/session'
|
|
46
45
|
|
|
47
46
|
export default [
|
|
48
|
-
|
|
47
|
+
SessionProvider,
|
|
49
48
|
]
|
|
50
49
|
```
|
|
51
50
|
|
|
@@ -144,7 +143,7 @@ Session data is JSON-serialised, base64url-encoded, and signed with HMAC-SHA256.
|
|
|
144
143
|
|
|
145
144
|
### `redis`
|
|
146
145
|
|
|
147
|
-
|
|
146
|
+
The cookie holds the HMAC-signed session ID; the data lives in Redis under `{prefix}{id}`. Requires `ioredis`.
|
|
148
147
|
|
|
149
148
|
```ts
|
|
150
149
|
{
|
|
@@ -156,6 +155,18 @@ Session ID is stored in the cookie; data lives in Redis under `{prefix}{id}`. Re
|
|
|
156
155
|
}
|
|
157
156
|
```
|
|
158
157
|
|
|
158
|
+
### Driver tradeoffs
|
|
159
|
+
|
|
160
|
+
| | cookie | redis |
|
|
161
|
+
| --- | --- | --- |
|
|
162
|
+
| Server-side store | none — payload lives in the cookie | required |
|
|
163
|
+
| Max size | ~4 KB | bounded by Redis |
|
|
164
|
+
| `regenerate()` invalidates the old cookie | **no** — old signed cookie remains valid until its `Max-Age` | yes — old key is deleted from Redis |
|
|
165
|
+
| `destroy()` after logout | no-op (statelessness is the tradeoff) | actual delete |
|
|
166
|
+
| Survives a redis outage | n/a | sessions become unreadable |
|
|
167
|
+
|
|
168
|
+
If you need true post-logout invalidation, a stolen-cookie kill switch, or full session-fixation defense beyond rotating the ID on login, **use the redis driver**. The cookie driver is the right choice when statelessness is the goal and the data fits — flash messages, CSRF tokens, simple "is logged in" markers — and you can accept that revocation only happens at TTL.
|
|
169
|
+
|
|
159
170
|
---
|
|
160
171
|
|
|
161
172
|
## Notes
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# @rudderjs/session
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
HTTP session support — signed cookie sessions (default) and Redis-backed sessions. Provides `SessionInstance` on `req.session`, the `Session` facade (AsyncLocalStorage-backed), flash data, and session ID regeneration. Auto-installs on the `web` route group via `appendToGroup('web', sessionMiddleware(cfg))` — apps do NOT need to wire it manually.
|
|
6
|
+
|
|
7
|
+
## Key Patterns
|
|
8
|
+
|
|
9
|
+
### Setup
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
// config/session.ts
|
|
13
|
+
export default {
|
|
14
|
+
driver: 'cookie', // or 'redis'
|
|
15
|
+
lifetime: 120, // minutes
|
|
16
|
+
secret: process.env.SESSION_SECRET,
|
|
17
|
+
cookie: {
|
|
18
|
+
name: 'rudderjs_session',
|
|
19
|
+
secure: true,
|
|
20
|
+
httpOnly: true,
|
|
21
|
+
sameSite: 'lax',
|
|
22
|
+
},
|
|
23
|
+
} satisfies SessionConfig
|
|
24
|
+
|
|
25
|
+
// bootstrap/providers.ts
|
|
26
|
+
import { SessionProvider } from '@rudderjs/session'
|
|
27
|
+
export default [SessionProvider]
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
No per-route wiring needed on web routes — the provider auto-installs on the `web` group during `boot()`.
|
|
31
|
+
|
|
32
|
+
### Reading and writing
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
// req.session is typed on every web request
|
|
36
|
+
Route.get('/profile', (req, res) => {
|
|
37
|
+
const visits = (req.session.get<number>('visits') ?? 0) + 1
|
|
38
|
+
req.session.put('visits', visits)
|
|
39
|
+
res.json({ visits })
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
// Session facade — works anywhere inside a middleware-wrapped request
|
|
43
|
+
import { Session } from '@rudderjs/session'
|
|
44
|
+
|
|
45
|
+
Session.put('theme', 'dark')
|
|
46
|
+
const theme = Session.get<string>('theme')
|
|
47
|
+
Session.forget('theme')
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Flash data
|
|
51
|
+
|
|
52
|
+
Available on the **next** request only — typically used for post-redirect messages:
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
Session.flash('success', 'Post created!') // set on this request
|
|
56
|
+
// ...redirect...
|
|
57
|
+
Session.getFlash<string>('success') // readable on the next request; cleared after read
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Session ID and regeneration
|
|
61
|
+
|
|
62
|
+
Always regenerate after login to prevent session fixation:
|
|
63
|
+
|
|
64
|
+
```ts
|
|
65
|
+
const id = req.session.id()
|
|
66
|
+
await req.session.regenerate() // new ID, same data
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### API routes are stateless
|
|
70
|
+
|
|
71
|
+
API routes don't get session by default. If a specific api route needs session, mount `SessionMiddleware()` per-route:
|
|
72
|
+
|
|
73
|
+
```ts
|
|
74
|
+
// routes/api.ts
|
|
75
|
+
Route.post('/api/preferences', handler, [SessionMiddleware()])
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Common Pitfalls
|
|
79
|
+
|
|
80
|
+
- **`m.use(sessionMiddleware(cfg))` globally.** Don't. Doubles up with the auto-install on the `web` group, reads from two different `SessionInstance`s, and api routes get session they shouldn't have. Symptom: data set in the handler doesn't persist across requests.
|
|
81
|
+
- **`Session.current()` throws outside middleware.** It reads from AsyncLocalStorage; calling it outside a middleware-wrapped request has no ALS context. Use `Session.active()` for a non-throwing check, or guard with try/catch if you might be in a stateless context (`SessionGuard.user()` does this).
|
|
82
|
+
- **Cookie driver size limit.** The cookie driver stores all session data client-side — keep values small (~4 KB cookie limit). For larger payloads use the Redis driver.
|
|
83
|
+
- **Forgetting `session.regenerate()` after login.** Without it you're vulnerable to session fixation. `@rudderjs/auth`'s `Auth.login()` calls `regenerate()` automatically — if you log a user in manually, remember to regenerate.
|
|
84
|
+
- **Redis driver without `ioredis`.** The Redis driver lazy-loads `ioredis`. Install it as a peer: `pnpm add ioredis`.
|
|
85
|
+
|
|
86
|
+
## Key Imports
|
|
87
|
+
|
|
88
|
+
```ts
|
|
89
|
+
// Provider + middleware
|
|
90
|
+
import { SessionProvider, sessionMiddleware, SessionMiddleware } from '@rudderjs/session'
|
|
91
|
+
|
|
92
|
+
// Facade
|
|
93
|
+
import { Session } from '@rudderjs/session'
|
|
94
|
+
|
|
95
|
+
// Types
|
|
96
|
+
import type { SessionConfig, SessionInstance } from '@rudderjs/session'
|
|
97
|
+
```
|
package/dist/index.d.ts
CHANGED
|
@@ -57,6 +57,17 @@ export declare class SessionInstance {
|
|
|
57
57
|
has(key: string): boolean;
|
|
58
58
|
all(): Record<string, unknown>;
|
|
59
59
|
id(): string;
|
|
60
|
+
/**
|
|
61
|
+
* Mint a fresh session id and best-effort destroy the prior one server-side.
|
|
62
|
+
*
|
|
63
|
+
* **Cookie driver caveat (`session.driver = 'cookie'`):** the previous
|
|
64
|
+
* cookie remains valid until its `Max-Age` expires. The cookie driver is
|
|
65
|
+
* stateless — there is no server-side store to delete from — so a stolen
|
|
66
|
+
* pre-regenerate cookie can still be replayed within its TTL. Apps that
|
|
67
|
+
* need true post-logout invalidation (or fixation defense beyond
|
|
68
|
+
* "rotate the id on login") must use the redis driver, where `destroy()`
|
|
69
|
+
* actually removes the key. See README "Sessions" → "Driver tradeoffs".
|
|
70
|
+
*/
|
|
60
71
|
regenerate(): Promise<void>;
|
|
61
72
|
/** Whether the session data has been modified since loading. */
|
|
62
73
|
isDirty(): boolean;
|
|
@@ -79,11 +90,40 @@ export declare class Session {
|
|
|
79
90
|
static all(): Record<string, unknown>;
|
|
80
91
|
static regenerate(): Promise<void>;
|
|
81
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Test-only — run `fn` inside a session ALS context populated by `session`.
|
|
95
|
+
* Lets unit tests in other packages exercise code paths that go through the
|
|
96
|
+
* `Session` static facade (e.g. CSRF helpers, OAuth state) without standing
|
|
97
|
+
* up the full request middleware. NOT for production code.
|
|
98
|
+
*
|
|
99
|
+
* @internal
|
|
100
|
+
*/
|
|
101
|
+
export declare function _runWithSession<T>(session: SessionInstance, fn: () => T): T;
|
|
102
|
+
/** @internal Exported for tests; not part of the public API. */
|
|
103
|
+
export declare class RedisDriver implements InternalDriver {
|
|
104
|
+
private readonly redisConfig;
|
|
105
|
+
private readonly secret;
|
|
106
|
+
private clientPromise;
|
|
107
|
+
private readonly prefix;
|
|
108
|
+
constructor(redisConfig: NonNullable<SessionConfig['redis']>, secret: string);
|
|
109
|
+
private getClient;
|
|
110
|
+
private key;
|
|
111
|
+
load(cookieValue: string | undefined): Promise<SessionPayload>;
|
|
112
|
+
persist(payload: SessionPayload, ttl: number): Promise<string>;
|
|
113
|
+
destroy(id: string): Promise<void>;
|
|
114
|
+
private empty;
|
|
115
|
+
}
|
|
82
116
|
export declare function sessionMiddleware(config: SessionConfig): MiddlewareHandler;
|
|
83
117
|
/**
|
|
84
118
|
* Session middleware that reads its config from the DI container.
|
|
85
119
|
* Requires session() provider to be registered in bootstrap/providers.ts.
|
|
86
120
|
*
|
|
121
|
+
* Resolves the singleton middleware bound by `SessionProvider.boot()` to
|
|
122
|
+
* `session.middleware`, so per-route opt-ins on api routes share the same
|
|
123
|
+
* driver — and the same redis connection — as the auto-installed web group
|
|
124
|
+
* middleware. Constructing a fresh `sessionMiddleware(cfg)` per call would
|
|
125
|
+
* spin up a new RedisDriver (and a new ioredis connection) per route.
|
|
126
|
+
*
|
|
87
127
|
* Usage in routes:
|
|
88
128
|
* import { SessionMiddleware } from '@rudderjs/session'
|
|
89
129
|
* Route.get('/path', handler, [SessionMiddleware()])
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAA8B,MAAM,gBAAgB,CAAA;AAC5E,OAAO,KAAK,EAAc,WAAW,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAIrF,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,UAAU;QAClB,OAAO,EAAE,eAAe,CAAA;KACzB;CACF;AAID,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAI,QAAQ,GAAG,OAAO,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAI,MAAM,CAAA;IAChB,MAAM,EAAE;QACN,IAAI,EAAM,MAAM,CAAA;QAChB,MAAM,EAAI,OAAO,CAAA;QACjB,QAAQ,EAAE,OAAO,CAAA;QACjB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;QACnC,IAAI,EAAM,MAAM,CAAA;KACjB,CAAA;IACD,KAAK,CAAC,EAAE;QACN,MAAM,CAAC,EAAI,MAAM,CAAA;QACjB,GAAG,CAAC,EAAO,MAAM,CAAA;QACjB,IAAI,CAAC,EAAM,MAAM,CAAA;QACjB,IAAI,CAAC,EAAM,MAAM,CAAA;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAA;CACF;AAID,UAAU,cAAc;IACtB,EAAE,EAAU,MAAM,CAAA;IAClB,IAAI,EAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC;AAID,UAAU,cAAc;IACtB,sEAAsE;IACtE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9D,mEAAmE;IACnE,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACrE,+BAA+B;IAC/B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACnC;AAID,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,GAAG,CAAe;IAC1B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;gBAE3B,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -11,14 +11,19 @@ export class SessionInstance {
|
|
|
11
11
|
_driver;
|
|
12
12
|
_config;
|
|
13
13
|
constructor(payload, driver, config) {
|
|
14
|
+
// Default missing fields rather than trusting the shape — legacy and
|
|
15
|
+
// corrupt redis entries (or third-party writes) may omit flash_next or
|
|
16
|
+
// data entirely, and crashing the constructor takes the whole request
|
|
17
|
+
// down on every load.
|
|
18
|
+
const flashPrev = payload.flash_next ?? {};
|
|
14
19
|
this._id = payload.id;
|
|
15
|
-
this._data = { ...payload.data };
|
|
16
|
-
this._flash = { ...
|
|
20
|
+
this._data = { ...(payload.data ?? {}) };
|
|
21
|
+
this._flash = { ...flashPrev }; // prev flash_next → current flash
|
|
17
22
|
this._flashNext = {};
|
|
18
23
|
this._driver = driver;
|
|
19
24
|
this._config = config;
|
|
20
25
|
// Flash data was consumed — mark dirty so save() clears it from the cookie
|
|
21
|
-
if (Object.keys(
|
|
26
|
+
if (Object.keys(flashPrev).length > 0)
|
|
22
27
|
this._dirty = true;
|
|
23
28
|
}
|
|
24
29
|
get(key, fallback) {
|
|
@@ -54,6 +59,17 @@ export class SessionInstance {
|
|
|
54
59
|
id() {
|
|
55
60
|
return this._id;
|
|
56
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Mint a fresh session id and best-effort destroy the prior one server-side.
|
|
64
|
+
*
|
|
65
|
+
* **Cookie driver caveat (`session.driver = 'cookie'`):** the previous
|
|
66
|
+
* cookie remains valid until its `Max-Age` expires. The cookie driver is
|
|
67
|
+
* stateless — there is no server-side store to delete from — so a stolen
|
|
68
|
+
* pre-regenerate cookie can still be replayed within its TTL. Apps that
|
|
69
|
+
* need true post-logout invalidation (or fixation defense beyond
|
|
70
|
+
* "rotate the id on login") must use the redis driver, where `destroy()`
|
|
71
|
+
* actually removes the key. See README "Sessions" → "Driver tradeoffs".
|
|
72
|
+
*/
|
|
57
73
|
async regenerate() {
|
|
58
74
|
await this._driver.destroy(this._id);
|
|
59
75
|
this._id = randomUUID();
|
|
@@ -129,19 +145,33 @@ export class Session {
|
|
|
129
145
|
return this.current().regenerate();
|
|
130
146
|
}
|
|
131
147
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
148
|
+
/**
|
|
149
|
+
* Test-only — run `fn` inside a session ALS context populated by `session`.
|
|
150
|
+
* Lets unit tests in other packages exercise code paths that go through the
|
|
151
|
+
* `Session` static facade (e.g. CSRF helpers, OAuth state) without standing
|
|
152
|
+
* up the full request middleware. NOT for production code.
|
|
153
|
+
*
|
|
154
|
+
* @internal
|
|
155
|
+
*/
|
|
156
|
+
export function _runWithSession(session, fn) {
|
|
157
|
+
return _als.run(session, fn);
|
|
137
158
|
}
|
|
138
|
-
|
|
139
|
-
|
|
159
|
+
// ─── Sign / Verify primitives ──────────────────────────────
|
|
160
|
+
// Generic HMAC-SHA256 sign+verify shared by both drivers. Cookie driver signs
|
|
161
|
+
// the base64url-encoded JSON payload; redis driver signs the session ID alone
|
|
162
|
+
// so a stolen UUID can't be replayed and an attacker-supplied ID can't fixate
|
|
163
|
+
// onto a victim's session.
|
|
164
|
+
function sign(value, secret) {
|
|
165
|
+
const hmac = createHmac('sha256', secret).update(value).digest('base64url');
|
|
166
|
+
return `${value}.${hmac}`;
|
|
167
|
+
}
|
|
168
|
+
function verify(signed, secret) {
|
|
169
|
+
const dotIdx = signed.lastIndexOf('.');
|
|
140
170
|
if (dotIdx === -1)
|
|
141
171
|
return null;
|
|
142
|
-
const
|
|
143
|
-
const hmac =
|
|
144
|
-
const expected = createHmac('sha256', secret).update(
|
|
172
|
+
const value = signed.slice(0, dotIdx);
|
|
173
|
+
const hmac = signed.slice(dotIdx + 1);
|
|
174
|
+
const expected = createHmac('sha256', secret).update(value).digest('base64url');
|
|
145
175
|
// Constant-time comparison
|
|
146
176
|
if (expected.length !== hmac.length)
|
|
147
177
|
return null;
|
|
@@ -149,7 +179,15 @@ function verifyPayload(cookieValue, secret) {
|
|
|
149
179
|
for (let i = 0; i < expected.length; i++) {
|
|
150
180
|
mismatch |= (expected.codePointAt(i) ?? 0) ^ (hmac.codePointAt(i) ?? 0);
|
|
151
181
|
}
|
|
152
|
-
|
|
182
|
+
return mismatch === 0 ? value : null;
|
|
183
|
+
}
|
|
184
|
+
// ─── Cookie Driver ─────────────────────────────────────────
|
|
185
|
+
function signPayload(payload, secret) {
|
|
186
|
+
return sign(Buffer.from(JSON.stringify(payload)).toString('base64url'), secret);
|
|
187
|
+
}
|
|
188
|
+
function verifyPayload(cookieValue, secret) {
|
|
189
|
+
const b64 = verify(cookieValue, secret);
|
|
190
|
+
if (b64 === null)
|
|
153
191
|
return null;
|
|
154
192
|
try {
|
|
155
193
|
return JSON.parse(Buffer.from(b64, 'base64url').toString('utf8'));
|
|
@@ -172,44 +210,67 @@ class CookieDriver {
|
|
|
172
210
|
return signPayload(payload, this.secret);
|
|
173
211
|
}
|
|
174
212
|
async destroy(_id) {
|
|
175
|
-
// Cookie driver
|
|
213
|
+
// Cookie driver is stateless — there is no server-side store to delete
|
|
214
|
+
// from. The pre-regenerate cookie therefore remains valid until its
|
|
215
|
+
// Max-Age expires; this is documented on `SessionInstance.regenerate()`.
|
|
216
|
+
// Apps that need true post-logout invalidation must use the redis driver.
|
|
176
217
|
}
|
|
177
218
|
empty() {
|
|
178
219
|
return { id: randomUUID(), data: {}, flash_next: {} };
|
|
179
220
|
}
|
|
180
221
|
}
|
|
181
|
-
|
|
182
|
-
class RedisDriver {
|
|
183
|
-
|
|
184
|
-
|
|
222
|
+
/** @internal Exported for tests; not part of the public API. */
|
|
223
|
+
export class RedisDriver {
|
|
224
|
+
redisConfig;
|
|
225
|
+
secret;
|
|
226
|
+
// Cache the *promise* of a client, not the client itself. With a raw
|
|
227
|
+
// `if (!this.client)` guard, two concurrent first-request callers would
|
|
228
|
+
// both fall through and each construct a new ioredis instance — the
|
|
229
|
+
// second overwrites the first, leaking the first connection's FD and
|
|
230
|
+
// its retry timer. Caching the promise means concurrent callers all
|
|
231
|
+
// await the same in-flight connect.
|
|
232
|
+
clientPromise = null;
|
|
185
233
|
prefix;
|
|
186
|
-
constructor(
|
|
187
|
-
this.
|
|
188
|
-
this.
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
234
|
+
constructor(redisConfig, secret) {
|
|
235
|
+
this.redisConfig = redisConfig;
|
|
236
|
+
this.secret = secret;
|
|
237
|
+
this.prefix = redisConfig.prefix ?? 'session:';
|
|
238
|
+
}
|
|
239
|
+
getClient() {
|
|
240
|
+
if (!this.clientPromise) {
|
|
241
|
+
this.clientPromise = (async () => {
|
|
242
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
243
|
+
const { Redis } = await import('ioredis');
|
|
244
|
+
return this.redisConfig.url
|
|
245
|
+
? new Redis(this.redisConfig.url)
|
|
246
|
+
: new Redis({
|
|
247
|
+
host: this.redisConfig.host ?? '127.0.0.1',
|
|
248
|
+
port: this.redisConfig.port ?? 6379,
|
|
249
|
+
password: this.redisConfig.password,
|
|
250
|
+
});
|
|
251
|
+
})();
|
|
252
|
+
// If the import or constructor throws, drop the rejected promise so
|
|
253
|
+
// the next call retries instead of permanently caching the failure.
|
|
254
|
+
this.clientPromise.catch(() => { this.clientPromise = null; });
|
|
201
255
|
}
|
|
202
|
-
return this.
|
|
256
|
+
return this.clientPromise;
|
|
203
257
|
}
|
|
204
258
|
key(id) { return `${this.prefix}${id}`; }
|
|
205
259
|
async load(cookieValue) {
|
|
206
260
|
if (!cookieValue)
|
|
207
261
|
return this.empty();
|
|
262
|
+
// Verify HMAC before touching redis. An attacker who plants an unsigned
|
|
263
|
+
// ID — or guesses one — never reaches the redis lookup, and a cache miss
|
|
264
|
+
// on a valid signature still creates a fresh ID rather than fixating on
|
|
265
|
+
// the cookie-supplied value.
|
|
266
|
+
const id = verify(cookieValue, this.secret);
|
|
267
|
+
if (id === null)
|
|
268
|
+
return this.empty();
|
|
208
269
|
try {
|
|
209
270
|
const client = await this.getClient();
|
|
210
|
-
const raw = await client.get(this.key(
|
|
271
|
+
const raw = await client.get(this.key(id));
|
|
211
272
|
if (!raw)
|
|
212
|
-
return this.
|
|
273
|
+
return this.empty();
|
|
213
274
|
return JSON.parse(raw);
|
|
214
275
|
}
|
|
215
276
|
catch {
|
|
@@ -219,7 +280,7 @@ class RedisDriver {
|
|
|
219
280
|
async persist(payload, ttl) {
|
|
220
281
|
const client = await this.getClient();
|
|
221
282
|
await client.set(this.key(payload.id), JSON.stringify(payload), 'EX', ttl);
|
|
222
|
-
return payload.id;
|
|
283
|
+
return sign(payload.id, this.secret);
|
|
223
284
|
}
|
|
224
285
|
async destroy(id) {
|
|
225
286
|
try {
|
|
@@ -233,9 +294,6 @@ class RedisDriver {
|
|
|
233
294
|
empty() {
|
|
234
295
|
return { id: randomUUID(), data: {}, flash_next: {} };
|
|
235
296
|
}
|
|
236
|
-
emptyWithId(id) {
|
|
237
|
-
return { id, data: {}, flash_next: {} };
|
|
238
|
-
}
|
|
239
297
|
}
|
|
240
298
|
// ─── Helpers ───────────────────────────────────────────────
|
|
241
299
|
function parseCookie(header, name) {
|
|
@@ -264,7 +322,7 @@ function buildCookieHeader(name, value, config) {
|
|
|
264
322
|
}
|
|
265
323
|
function makeDriver(config) {
|
|
266
324
|
if (config.driver === 'redis')
|
|
267
|
-
return new RedisDriver(config.redis ?? {});
|
|
325
|
+
return new RedisDriver(config.redis ?? {}, config.secret);
|
|
268
326
|
return new CookieDriver(config.secret);
|
|
269
327
|
}
|
|
270
328
|
// ─── Session Middleware ────────────────────────────────────
|
|
@@ -279,8 +337,30 @@ export function sessionMiddleware(config) {
|
|
|
279
337
|
if (!cookieValue)
|
|
280
338
|
session.markDirty();
|
|
281
339
|
req.raw['__rjs_session'] = session;
|
|
282
|
-
|
|
283
|
-
|
|
340
|
+
// Persist regardless of whether next() throws — flash messages on error
|
|
341
|
+
// redirects, new sessions on error responses, and regenerate() must
|
|
342
|
+
// survive a thrown handler. Save errors only surface when next() did not
|
|
343
|
+
// already throw, so the original exception isn't masked by a redis blip.
|
|
344
|
+
let nextErrored = false;
|
|
345
|
+
let nextErr;
|
|
346
|
+
try {
|
|
347
|
+
await _als.run(session, next);
|
|
348
|
+
}
|
|
349
|
+
catch (err) {
|
|
350
|
+
nextErrored = true;
|
|
351
|
+
nextErr = err;
|
|
352
|
+
}
|
|
353
|
+
try {
|
|
354
|
+
await session.save(res);
|
|
355
|
+
}
|
|
356
|
+
catch (saveErr) {
|
|
357
|
+
if (!nextErrored) {
|
|
358
|
+
nextErrored = true;
|
|
359
|
+
nextErr = saveErr;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
if (nextErrored)
|
|
363
|
+
throw nextErr;
|
|
284
364
|
};
|
|
285
365
|
}
|
|
286
366
|
// ─── Zero-config middleware (reads config from DI) ─────────
|
|
@@ -288,13 +368,18 @@ export function sessionMiddleware(config) {
|
|
|
288
368
|
* Session middleware that reads its config from the DI container.
|
|
289
369
|
* Requires session() provider to be registered in bootstrap/providers.ts.
|
|
290
370
|
*
|
|
371
|
+
* Resolves the singleton middleware bound by `SessionProvider.boot()` to
|
|
372
|
+
* `session.middleware`, so per-route opt-ins on api routes share the same
|
|
373
|
+
* driver — and the same redis connection — as the auto-installed web group
|
|
374
|
+
* middleware. Constructing a fresh `sessionMiddleware(cfg)` per call would
|
|
375
|
+
* spin up a new RedisDriver (and a new ioredis connection) per route.
|
|
376
|
+
*
|
|
291
377
|
* Usage in routes:
|
|
292
378
|
* import { SessionMiddleware } from '@rudderjs/session'
|
|
293
379
|
* Route.get('/path', handler, [SessionMiddleware()])
|
|
294
380
|
*/
|
|
295
381
|
export function SessionMiddleware() {
|
|
296
|
-
|
|
297
|
-
return sessionMiddleware(config);
|
|
382
|
+
return app().make('session.middleware');
|
|
298
383
|
}
|
|
299
384
|
// ─── Service Provider Factory ──────────────────────────────
|
|
300
385
|
/**
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rudderjs/session",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"rudderjs": {
|
|
5
5
|
"provider": "SessionProvider",
|
|
6
6
|
"stage": "infrastructure"
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
},
|
|
14
14
|
"type": "module",
|
|
15
15
|
"files": [
|
|
16
|
-
"dist"
|
|
16
|
+
"dist",
|
|
17
|
+
"boost"
|
|
17
18
|
],
|
|
18
19
|
"main": "./dist/index.js",
|
|
19
20
|
"types": "./dist/index.d.ts",
|
|
@@ -24,8 +25,8 @@
|
|
|
24
25
|
}
|
|
25
26
|
},
|
|
26
27
|
"dependencies": {
|
|
27
|
-
"@rudderjs/
|
|
28
|
-
"@rudderjs/
|
|
28
|
+
"@rudderjs/contracts": "^1.2.0",
|
|
29
|
+
"@rudderjs/core": "^1.1.2"
|
|
29
30
|
},
|
|
30
31
|
"optionalDependencies": {
|
|
31
32
|
"ioredis": "^5.3.0"
|