# 用户系统使用指南 ## 新功能概述 已为 Meow Embedded Music Server 添加完整的用户系统,支持: ### ✨ 核心功能 1. **用户认证** - 用户注册(用户名 + 邮箱 + 密码) - 用户登录 - 会话管理(基于Token) - 安全的密码加密存储 2. **个人歌单管理** - 每个用户独立的"我喜欢"歌单 - 创建自定义歌单 - 添加/删除歌曲到歌单 - 删除自定义歌单 3. **音乐搜索和播放** - 在线搜索音乐 - 实时播放音乐 - 添加到个人歌单 - 查看歌单歌曲列表 ## 快速开始 ### 1. 安装依赖 ```bash go mod tidy ``` ### 2. 启动服务器 ```bash go run . ``` ### 3. 访问应用 打开浏览器访问: - **新版应用(推荐)**: `http://localhost:2233/app` - **旧版界面(兼容)**: `http://localhost:2233/` ## API 文档 ### 认证相关 #### 注册 ```http POST /api/auth/register Content-Type: application/json { "username": "testuser", "email": "test@example.com", "password": "password123" } ``` **响应**: ```json { "token": "session_token_here", "user": { "id": "user_id", "username": "testuser", "email": "test@example.com", "created_at": "2024-01-01T00:00:00Z", "updated_at": "2024-01-01T00:00:00Z" } } ``` #### 登录 ```http POST /api/auth/login Content-Type: application/json { "username": "testuser", "password": "password123" } ``` #### 登出 ```http POST /api/auth/logout Authorization: Bearer ``` #### 获取当前用户信息 ```http GET /api/auth/me Authorization: Bearer ``` ### 歌单管理(需要认证) #### 获取用户所有歌单 ```http GET /api/user/playlists Authorization: Bearer ``` #### 创建歌单 ```http POST /api/user/playlists/create Authorization: Bearer Content-Type: application/json { "name": "我的歌单", "description": "这是我的歌单描述" } ``` #### 添加歌曲到歌单 ```http POST /api/user/playlists/add-song?playlist_id= Authorization: Bearer Content-Type: application/json { "title": "歌曲名", "artist": "歌手名", "audio_url": "/path/to/audio", "audio_full_url": "/path/to/full/audio", "cover_url": "/path/to/cover", "lyric_url": "/path/to/lyric", "duration": 240 } ``` #### 从歌单移除歌曲 ```http DELETE /api/user/playlists/remove-song?playlist_id=&title=&artist= Authorization: Bearer ``` #### 删除歌单 ```http DELETE /api/user/playlists/delete?playlist_id= Authorization: Bearer ``` ### 音乐搜索 ```http GET /stream_pcm?song=<歌曲名>&singer=<歌手名> ``` ## 数据存储 用户数据存储在以下文件中: - `./files/users.json` - 用户账户信息 - `./files/user_playlists.json` - 用户歌单数据 - `./files/playlists.json` - 旧版全局歌单(向后兼容) ## 功能特性 ### 🔒 安全性 - 密码使用 bcrypt 加密存储 - 基于 Token 的会话管理 - API 请求认证保护 ### 📱 响应式设计 - 现代化 UI 界面 - 支持桌面和移动设备 - 流畅的用户体验 ### 🎵 音乐功能 - 实时搜索音乐 - 在线播放 - 个人收藏管理 - 自定义歌单 ### 🔄 向后兼容 - 保留旧版 API 端点 - 支持旧版界面访问 - 平滑升级路径 ## 使用示例 ### JavaScript 示例 ```javascript // 注册用户 const registerResponse = await fetch('/api/auth/register', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ username: 'myuser', email: 'user@example.com', password: 'securepass123' }) }); const { token, user } = await registerResponse.json(); // 获取歌单 const playlistsResponse = await fetch('/api/user/playlists', { headers: { 'Authorization': `Bearer ${token}` } }); const playlists = await playlistsResponse.json(); // 搜索音乐 const musicResponse = await fetch('/stream_pcm?song=告白气球&singer=周杰伦'); const song = await musicResponse.json(); // 添加到歌单 await fetch(`/api/user/playlists/add-song?playlist_id=${playlists[0].id}`, { method: 'POST', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, body: JSON.stringify(song) }); ``` ## 故障排除 ### 问题:无法登录 - 检查用户名和密码是否正确 - 确认用户已注册 - 检查服务器日志 ### 问题:Token 过期 - 重新登录获取新 Token - Token 存储在 localStorage 中,清除浏览器缓存后需要重新登录 ### 问题:添加歌曲失败 - 确认已登录并有有效 Token - 检查歌单 ID 是否正确 - 确认歌曲信息完整 ## 开发者信息 - 后端框架:Go (Golang) - 前端框架:React 18 + TailwindCSS - 认证方式:Token-based - 数据存储:JSON 文件 ## 更新日志 ### v2.0.0 (当前版本) - ✅ 添加用户注册和登录功能 - ✅ 实现个人歌单管理 - ✅ 创建现代化 Web 界面 - ✅ 支持在线音乐搜索和播放 - ✅ 向后兼容旧版 API --- **享受您的音乐之旅! 🎵**