create-dp-koa 1.1.5 → 1.1.7
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/package.json
CHANGED
|
@@ -41,6 +41,7 @@ DP-Koa Framework 完整文档体系索引,按功能模块和用户角色分类
|
|
|
41
41
|
| [服务拦截器指南](SERVICE_INTERCEPTOR_GUIDE.md) | docs/ | 拦截器使用 | 2024-01-01 |
|
|
42
42
|
| [服务层指南](SERVICE_PATTERN_GUIDE.md) | docs/ | 服务层设计模式 | 2024-01-01 |
|
|
43
43
|
| [事务管理使用](TRANSACTION_MANAGER_USAGE.md) | docs/ | 事务处理 | 2024-01-01 |
|
|
44
|
+
| [Session 注解使用指南](SESSION_DECORATOR_GUIDE.md) | docs/ | Session 注入与配置说明 | 2026-04-24 |
|
|
44
45
|
| [Swagger 集成指南](SWAGGER_INTEGRATION_GUIDE.md) | docs/ | API 文档配置 | 2024-01-01 |
|
|
45
46
|
| [测试指南](TESTING_GUIDE.md) | docs/ | 测试策略和工具 | 2024-01-01 |
|
|
46
47
|
|
|
@@ -139,6 +140,7 @@ DP-Koa Framework 完整文档体系索引,按功能模块和用户角色分类
|
|
|
139
140
|
| 功能模块 | 相关文档 | 描述 |
|
|
140
141
|
|----------|----------|------|
|
|
141
142
|
| 注解系统 | [企业级注解系统指南](ENTERPRISE_ANNOTATION_SYSTEM_GUIDE.md) | 装饰器注解使用 |
|
|
143
|
+
| Session 注解 | [Session 注解使用指南](SESSION_DECORATOR_GUIDE.md) | `@Session()` 与 `@Session('key')` |
|
|
142
144
|
| 拦截器 | [服务拦截器指南](SERVICE_INTERCEPTOR_GUIDE.md) | 请求/响应拦截 |
|
|
143
145
|
| 服务层 | [服务层指南](SERVICE_PATTERN_GUIDE.md) | 业务逻辑设计 |
|
|
144
146
|
| 事务管理 | [事务管理使用](TRANSACTION_MANAGER_USAGE.md) | 数据库事务处理 |
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Session 注解使用指南
|
|
2
|
+
|
|
3
|
+
本文档说明 `dp-koa-framework-core` 内建的 Session 能力,以及控制器参数注解 `@Session()` / `@Session('key')` 的使用方式。
|
|
4
|
+
|
|
5
|
+
## 1. 设计目标
|
|
6
|
+
|
|
7
|
+
- 保留现有 JWT + `ctx.state` 体系,不替代既有认证链路。
|
|
8
|
+
- 在控制器层提供传统 Session 读写能力,用于 OAuth2/SSO 等临时会话场景。
|
|
9
|
+
- Session 作为核心包内建功能,业务项目无需在 `app.ts` 手动 `app.use(session(...))`。
|
|
10
|
+
|
|
11
|
+
## 2. 启用方式
|
|
12
|
+
|
|
13
|
+
`dp-koa-framework-core` 在 `bootstrap` 期间自动注册 Session 中间件,无需额外启用。
|
|
14
|
+
|
|
15
|
+
默认配置:
|
|
16
|
+
|
|
17
|
+
- cookie key: `dpkoa.sid`
|
|
18
|
+
- maxAge: `24h`
|
|
19
|
+
- `httpOnly: true`
|
|
20
|
+
- `signed: true`
|
|
21
|
+
- `rolling: true`
|
|
22
|
+
- `sameSite: 'lax'`
|
|
23
|
+
|
|
24
|
+
## 3. 环境变量配置
|
|
25
|
+
|
|
26
|
+
- `SESSION_KEYS`: 多个签名 key,逗号分隔(推荐)
|
|
27
|
+
- `SESSION_SECRET`: 单个签名 key(兜底)
|
|
28
|
+
- `SESSION_KEY`: cookie 名称,默认 `dpkoa.sid`
|
|
29
|
+
- `SESSION_MAX_AGE_MS`: 会话过期时间(毫秒),默认 `86400000`
|
|
30
|
+
|
|
31
|
+
说明:
|
|
32
|
+
|
|
33
|
+
- 若 `SESSION_KEYS` 存在,则优先使用;
|
|
34
|
+
- 否则使用 `SESSION_SECRET`;
|
|
35
|
+
- 都未配置时使用框架默认值(建议生产环境务必覆盖)。
|
|
36
|
+
|
|
37
|
+
## 4. 控制器注解用法
|
|
38
|
+
|
|
39
|
+
### 4.1 注入整段 Session
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
@Get('/profile')
|
|
43
|
+
async profile(@Session() session: any) {
|
|
44
|
+
return {
|
|
45
|
+
code: 0,
|
|
46
|
+
data: {
|
|
47
|
+
uid: session?.uid ?? null,
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 4.2 按 key 注入
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
@Get('/profile')
|
|
57
|
+
async profile(@Session('uid') uid: string) {
|
|
58
|
+
return { code: 0, data: { uid } };
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 4.3 与 `@State` 并存
|
|
63
|
+
|
|
64
|
+
```ts
|
|
65
|
+
@Get('/secure')
|
|
66
|
+
async secure(
|
|
67
|
+
@Session('uid') uid: string,
|
|
68
|
+
@State('user') user: any
|
|
69
|
+
) {
|
|
70
|
+
return { code: 0, data: { uid, user } };
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## 5. 与 DTO 校验参数兼容说明
|
|
75
|
+
|
|
76
|
+
- `@Session('uid')` 中字符串参数被识别为 key 选择器;
|
|
77
|
+
- `@Session(SomeDto)` 中函数参数仍按既有语义作为 `validate` 处理;
|
|
78
|
+
- `@State` 同步支持相同规则(`@State('user')` 可按 key 读取)。
|
|
79
|
+
|
|
80
|
+
## 6. OAuth2/SSO 场景建议
|
|
81
|
+
|
|
82
|
+
- Session 仅存短期握手数据(如 `state`、`pkceVerifier`、临时 uid)。
|
|
83
|
+
- 登录完成后及时清理一次性字段,避免重放。
|
|
84
|
+
- 生产环境务必配置稳定签名 key(`SESSION_KEYS`/`SESSION_SECRET`)。
|
|
85
|
+
- 跨域回调场景需重点校验 cookie 策略(域名、`SameSite`、代理 HTTPS)。
|
package/template/package.json
CHANGED
|
@@ -65,8 +65,8 @@
|
|
|
65
65
|
"dotenv": "^16.5.0",
|
|
66
66
|
"dp-ioc2": "^1.0.1",
|
|
67
67
|
"dp-mqueue": "^1.0.4",
|
|
68
|
-
"dp-koa-framework-core": "^0.1.
|
|
69
|
-
"dp-koa-framework-libs": "^0.1.
|
|
68
|
+
"dp-koa-framework-core": "^0.1.6",
|
|
69
|
+
"dp-koa-framework-libs": "^0.1.4",
|
|
70
70
|
"jsonwebtoken": "^9.0.2",
|
|
71
71
|
"koa": "^3.0.0",
|
|
72
72
|
"koa-body": "^6.0.1",
|