Skip to content

useUserManager

当前登录用户资料的拉取、缓存与清理(依赖只读 Token 视图,与 useTokenManager 解耦)。

前置依赖

参数名类型说明
token.accessTokenRef<string | null>来自 useTokenManager
token.isAuthenticatedRef<boolean>登录态
env.vueVue 运行时ref / computed / watchEffect / 生命周期
env.storageuseStorage持久化 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
}

参数

参数名类型必填说明
tokenTokenReadonly只读 token 视图
options.fetchUserFnfunction基于 accessToken 拉用户
options.autoFetchbooleantoken 就绪时自动拉取,默认 true
options.storageKeystring默认 user:profile

返回值

字段类型说明
userRef<UserProfile | null>用户资料
isLoading / errorRef请求状态
hasUserRef<boolean>是否有用户
refreshUserfunction手动刷新
clearUserfunction清空用户与存储

工作原理

  1. 挂载时从 storage 水合 JSON 用户缓存。
  2. watchEffect 监听 token.isAuthenticated:登录且 autoFetch 时调用 refreshUser;登出时 clearUser
  3. refreshUser 用当前 accessToken 调 fetchUserFn,成功写入 user 并 persist。
  4. 用户变更经 watchEffect 同步 storage。

异常

拉取失败写入 error,返回 false,不抛出。