2.9 KiB
2.9 KiB
👤 用户管理功能说明
✅ 已完善的功能
1. 用户头像和菜单
位置: 页面右上角
功能:
- ✅ 显示用户名首字母作为头像
- ✅ 点击头像打开下拉菜单
- ✅ 显示用户名和邮箱
- ✅ 个人设置链接
- ✅ 退出登录按钮
状态显示:
- 加载中:显示 "..." 占位符
- 已登录:显示用户头像和菜单
- 未登录:显示"登录"按钮
2. 用户信息展示
设置页面 (/settings)
显示内容:
- 用户头像(大号,带首字母)
- 用户名
- 邮箱地址
- 用户 ID
3. 会话管理
技术实现:
- 使用 NextAuth.js 管理用户会话
- SessionProvider 包裹整个应用
- 自动获取和更新用户状态
4. 登出功能
实现方式:
- 点击"退出登录"
- 清除会话
- 自动跳转到登录页面
🎨 UI 组件
用户菜单组件
<DropdownMenu>
<DropdownMenuTrigger>
<Avatar>
<AvatarFallback>{首字母}</AvatarFallback>
</Avatar>
</DropdownMenuTrigger>
<DropdownMenuContent>
- 用户信息
- 个人设置
- 退出登录
</DropdownMenuContent>
</DropdownMenu>
用户信息卡片
<Card>
<Avatar>{大号头像}</Avatar>
<div>
<h3>{用户名}</h3>
<p>{邮箱}</p>
<p>{用户ID}</p>
</div>
</Card>
📱 使用流程
登录后
-
查看用户信息
- 右上角显示头像
- 点击头像查看详细信息
-
访问设置
- 点击头像 → "个人设置"
- 或点击设置图标
-
退出登录
- 点击头像 → "退出登录"
- 确认后跳转到登录页
未登录
- 右上角显示"登录"按钮
- 点击跳转到登录页面
🔧 技术细节
会话获取
const { data: session, status } = useSession()
用户信息
session.user.name // 用户名
session.user.email // 邮箱
session.user.id // 用户ID
登出
await signOut({ callbackUrl: "/auth/signin" })
🎯 功能特点
- 自动状态管理 - 无需手动刷新
- 优雅降级 - 未登录时显示登录按钮
- 加载状态 - 显示加载占位符
- 类型安全 - 完整的 TypeScript 支持
- 响应式设计 - 适配各种屏幕尺寸
📊 测试方法
-
登录测试
访问: http://localhost:3000/auth/signin 使用测试账号登录 -
查看用户信息
点击右上角头像 查看下拉菜单 -
访问设置页面
访问: http://localhost:3000/settings 查看用户信息卡片 -
退出登录
点击"退出登录" 验证跳转到登录页
✨ 完成状态
- ✅ 用户头像显示
- ✅ 用户菜单
- ✅ 用户信息展示
- ✅ 登出功能
- ✅ 会话管理
- ✅ 加载状态
- ✅ 未登录状态处理
用户管理功能已完全实现! 🎉