forked from wangziqi/gongxue-base
feat: enforce trusted session identity
This commit is contained in:
@@ -55,12 +55,11 @@ F:\project\参考\旧题库项目\src
|
||||
|
||||
前端应封装一个统一 API client,所有页面禁止直接散写 `Taro.request`。
|
||||
|
||||
迁移期请求头:
|
||||
本地迁移期仍可兼容旧请求头,但新的 Taro 请求封装必须按下面目标实现:
|
||||
|
||||
```text
|
||||
Authorization: Bearer <tk_session>
|
||||
x-tenant-id: <tenantId>
|
||||
x-user-id: <userId>
|
||||
x-tenant-id: <tenantId> # 仅作为登录前/公开目录租户上下文;登录后必须与 session 租户一致
|
||||
```
|
||||
|
||||
生产目标:
|
||||
@@ -69,7 +68,16 @@ x-user-id: <userId>
|
||||
Authorization: Bearer <supabase_access_token_or_server_session>
|
||||
```
|
||||
|
||||
生产后不应再由前端传 `x-user-id`。租户可以由可信 JWT claim、服务端 session、域名解析结果共同确定;前端传入的租户参数只能作为路由/展示上下文,不能作为安全依据。
|
||||
前端不应再传 `x-user-id`、query/body `userId` 来表示当前用户。后端已经实现 session 优先解析:如果 Authorization 存在,用户态接口以 session 用户为准;如果请求里伪造了不同的 `userId` 会返回 `AUTH_USER_MISMATCH`,伪造不同租户会返回 `AUTH_TENANT_MISMATCH`。
|
||||
|
||||
生产或云端测试建议设置:
|
||||
|
||||
```text
|
||||
ALLOW_LEGACY_AUTH_HEADERS=false
|
||||
ALLOW_PLATFORM_ADMIN_KEY=false
|
||||
```
|
||||
|
||||
这样旧式 `x-user-id` 和平台管理 key 会被拒绝,前端可以提前发现未按 session 接入的页面。
|
||||
|
||||
前端环境变量只允许包含:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user