23 lines
1.1 KiB
Markdown
23 lines
1.1 KiB
Markdown
# SupaDB 文档更新记录
|
||
|
||
## 2026-01-30
|
||
|
||
### AkSupa:从本地持久化 token 恢复 user/session
|
||
|
||
- **文件**:`components/supadb/aksupa.uts`
|
||
- **位置**:`export class AkSupa` -> `constructor(baseUrl: string, apikey: string)`,以及新增方法 `hydrateSessionFromStorage()`
|
||
- **定位标记**:在代码中搜索 `// [CHANGE][2026-01-30]`
|
||
|
||
#### 修改了什么
|
||
|
||
- 在 `AkSupa` 构造时,会尝试基于本地已持久化的 token(由 `AkReq.setToken` 写入 storage)恢复登录态。
|
||
- 新增 `hydrateSessionFromStorage()`:
|
||
- 通过 `AkReq.getToken()` 读取本地 access token
|
||
- 若 token 存在,则请求 `GET {baseUrl}/auth/v1/user`
|
||
- 将返回的 user 写入 `this.user`
|
||
- 若 `this.session` 为空,则补齐一个最小 session 对象,使 `getSession()` 在「重启 App / 刷新页面」后仍能正确反映登录状态
|
||
|
||
#### 为什么要改
|
||
|
||
此前 `AkReq` 会把 token 持久化到本地,但 `AkSupa` 启动时不会自动恢复 `this.user` / `this.session`,导致即使 token 仍有效,`getSession()` 也可能返回 `{ session: null, user: null }`,从而使依赖登录态的页面判断失败。
|