阅读时间:1 分钟
0 字

useGetAuth

useGetAuth hook 用于获取当前用户的认证信息,从 authStore 中读取用户状态。

功能特点

  • 👤 用户信息 - 获取当前登录用户的详细信息
  • 🔐 认证状态 - 实时获取认证状态数据
  • 🎯 权限信息 - 获取用户权限和相关数据
  • 📱 轻量读取 - 返回当前快照(非响应式)
  • 🏢 多管理端 - 支持获取指定管理端的认证信息
  • 高性能 - 直接从本地状态读取,无需网络请求

接口关系

该hook直接从 authStore 中读取认证数据,不调用网络接口。数据结构由认证提供者的登录和检查方法更新。

js
// authStore 中的用户状态结构
interface IUserState {
  token: string
  id: number
  info: Record<string, any>
  permission: any
}

使用方法

js
import { useGetAuth } from '@duxweb/dvha-core'

const userAuth = useGetAuth()

// 获取用户信息
if (userAuth?.token) {
  console.log('用户已登录:', userAuth)
} else {
  console.log('用户未登录')
}

参数说明

参数类型必需说明
manageNamestring管理端名称,不传则使用当前管理端

返回值

字段类型说明
返回值IUserState用户认证状态的快照

IUserState 类型说明

字段类型说明
tokenstring认证令牌
idnumber用户ID
infoRecord<string, any>用户详细信息
permissionany用户权限信息

基本用法示例

js
import { useGetAuth } from '@duxweb/dvha-core'
import { computed } from 'vue'

const userAuth = useGetAuth()

// 获取用户基本信息
const currentUser = computed(() => {
  return userAuth?.info || null
})

const isAuthenticated = computed(() => {
  return !!userAuth?.token
})

const displayName = computed(() => {
  const info = userAuth?.info
  return info?.name || info?.username || '访客'
})

高级用法示例

js
// 权限检查
const hasPermission = (permission) => {
  const permissions = userAuth?.permission

  if (Array.isArray(permissions)) {
    return permissions.includes(permission)
  }

  if (typeof permissions === 'object' && permissions !== null) {
    return permissions[permission] === true
  }

  return false
}

// 多管理端使用
const adminAuth = useGetAuth('admin')
const userAuth = useGetAuth('user')

// 用户偏好设置
const userPreferences = computed(() => {
  return userAuth?.info?.preferences || {}
})

const theme = computed(() => {
  return userPreferences.value.theme || 'light'
})

响应格式

json
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "id": 1,
  "info": {
    "username": "admin",
    "name": "管理员",
    "email": "admin@example.com",
    "avatar": "/avatars/admin.jpg",
    "role": "admin",
    "status": "active",
    "last_login_at": "2023-12-25T10:30:00Z",
    "created_at": "2023-01-01T00:00:00Z",
    "preferences": {
      "theme": "dark",
      "language": "zh"
    }
  },
  "permission": ["user.manage", "post.manage", "setting.manage"]
}

注意事项

  • 这是一个同步操作,直接从本地状态读取,不会发起网络请求
  • 返回的是当前快照;如需响应式请使用 authStore 的 data
  • 多管理端环境下,需要指定管理端名称来获取对应的认证信息
  • 如果用户未登录,返回的对象可能为空或只包含部分字段
  • 权限信息的格式取决于后端实现,可能是数组或对象
  • 建议在使用前先检查 token 字段来确认用户是否已登录