useUserManager
当前登录用户资料的拉取、缓存与清理(依赖只读 Token 视图,与 useTokenManager 解耦)。
前置依赖
| 参数名 | 类型 | 说明 |
|---|---|---|
token.accessToken | Ref<string | null> | 来自 useTokenManager |
token.isAuthenticated | Ref<boolean> | 登录态 |
env.vue | Vue 运行时 | ref / computed / watchEffect / 生命周期 |
env.storage | useStorage | 持久化 user:profile JSON |
函数签名
typescript
function useUserManager(
token: TokenReadonly,
options: UseUserManagerOptions,
env: UseUserManagerEnvironment,
): UseUserManagerReturn
interface UseUserManagerOptions {
storageKey?: string
fetchUserFn?: (accessToken: string) => Promise<UserProfile | null>
autoFetch?: boolean
}参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
token | TokenReadonly | 是 | 只读 token 视图 |
options.fetchUserFn | function | 否 | 基于 accessToken 拉用户 |
options.autoFetch | boolean | 否 | token 就绪时自动拉取,默认 true |
options.storageKey | string | 否 | 默认 user:profile |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
user | Ref<UserProfile | null> | 用户资料 |
isLoading / error | Ref | 请求状态 |
hasUser | Ref<boolean> | 是否有用户 |
refreshUser | function | 手动刷新 |
clearUser | function | 清空用户与存储 |
工作原理
- 挂载时从 storage 水合 JSON 用户缓存。
watchEffect监听token.isAuthenticated:登录且autoFetch时调用refreshUser;登出时clearUser。refreshUser用当前 accessToken 调fetchUserFn,成功写入user并 persist。- 用户变更经 watchEffect 同步 storage。
异常
拉取失败写入 error,返回 false,不抛出。