217 lines
4.9 KiB
Markdown
217 lines
4.9 KiB
Markdown
|
|
# 📧 邮箱验证码登录功能测试指南
|
|||
|
|
|
|||
|
|
## 🎯 功能概述
|
|||
|
|
|
|||
|
|
已实现完整的邮箱验证码登录功能,包括:
|
|||
|
|
- ✅ 前端登录界面(支持手机/邮箱切换)
|
|||
|
|
- ✅ 后端API接口(验证码发送/验证/登录)
|
|||
|
|
- ✅ 本地模拟测试(无需真实邮件服务)
|
|||
|
|
- ✅ 开发环境友好(验证码在控制台显示)
|
|||
|
|
|
|||
|
|
## 🚀 快速测试
|
|||
|
|
|
|||
|
|
### 方法1:使用测试页面(推荐)
|
|||
|
|
|
|||
|
|
1. **打开测试页面**:
|
|||
|
|
```
|
|||
|
|
浏览器打开:demo/test-email-login.html
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **测试步骤**:
|
|||
|
|
- 点击"发送验证码"按钮
|
|||
|
|
- 查看控制台输出的模拟邮件内容
|
|||
|
|
- 使用验证码 `123456` 进行登录测试
|
|||
|
|
|
|||
|
|
### 方法2:使用前端应用
|
|||
|
|
|
|||
|
|
1. **启动前端服务**:
|
|||
|
|
```bash
|
|||
|
|
cd demo/frontend
|
|||
|
|
npm run dev
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **访问登录页面**:
|
|||
|
|
```
|
|||
|
|
http://test.yourdomain.com:5173/login
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. **测试邮箱登录**:
|
|||
|
|
- 点击"邮箱登录"标签
|
|||
|
|
- 输入邮箱地址(如:test@example.com)
|
|||
|
|
- 点击"获取验证码"
|
|||
|
|
- 查看控制台输出的验证码
|
|||
|
|
- 输入验证码进行登录
|
|||
|
|
|
|||
|
|
## 🔧 开发环境测试
|
|||
|
|
|
|||
|
|
### 模拟邮件发送功能
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
// 邮件发送函数
|
|||
|
|
async function sendVerificationEmail(email, code) {
|
|||
|
|
if (process.env.NODE_ENV === 'development') {
|
|||
|
|
// 开发环境:在控制台显示邮件内容
|
|||
|
|
console.log(`📨 模拟发送邮件到: ${email}`);
|
|||
|
|
console.log(`📝 邮件内容: 您的验证码是 ${code},有效期5分钟`);
|
|||
|
|
console.log(`📮 发信地址: dev-noreply@local.yourdomain.com`);
|
|||
|
|
return true;
|
|||
|
|
} else {
|
|||
|
|
// 生产环境:调用腾讯云SES
|
|||
|
|
// ... 腾讯云API调用
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 控制台输出示例
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
📨 模拟发送邮件到: test@example.com
|
|||
|
|
📝 邮件内容: 您的验证码是 123456,有效期5分钟
|
|||
|
|
📮 发信地址: dev-noreply@local.yourdomain.com
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📋 API接口测试
|
|||
|
|
|
|||
|
|
### 1. 发送验证码
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://api.yourdomain.com:8080/api/verification/email/send \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{"email": "test@example.com"}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"message": "验证码发送成功"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 验证码登录
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://api.yourdomain.com:8080/api/auth/login/email \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{"email": "test@example.com", "code": "123456"}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"message": "登录成功",
|
|||
|
|
"data": {
|
|||
|
|
"user": {
|
|||
|
|
"id": 1,
|
|||
|
|
"username": "test",
|
|||
|
|
"email": "test@example.com",
|
|||
|
|
"role": "ROLE_USER"
|
|||
|
|
},
|
|||
|
|
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🎨 前端界面功能
|
|||
|
|
|
|||
|
|
### 登录方式切换
|
|||
|
|
- **手机登录**:传统的手机号验证码登录
|
|||
|
|
- **邮箱登录**:新的邮箱验证码登录
|
|||
|
|
|
|||
|
|
### 邮箱登录流程
|
|||
|
|
1. 选择"邮箱登录"标签
|
|||
|
|
2. 输入邮箱地址
|
|||
|
|
3. 点击"获取验证码"
|
|||
|
|
4. 查看控制台获取验证码
|
|||
|
|
5. 输入验证码并登录
|
|||
|
|
|
|||
|
|
### 界面特性
|
|||
|
|
- ✅ 响应式设计
|
|||
|
|
- ✅ 表单验证
|
|||
|
|
- ✅ 倒计时功能
|
|||
|
|
- ✅ 错误提示
|
|||
|
|
- ✅ 开发模式友好
|
|||
|
|
|
|||
|
|
## 🔍 故障排除
|
|||
|
|
|
|||
|
|
### 常见问题
|
|||
|
|
|
|||
|
|
#### 1. 验证码发送失败
|
|||
|
|
- **检查**:后端服务是否启动
|
|||
|
|
- **解决**:启动后端服务或使用开发模式
|
|||
|
|
|
|||
|
|
#### 2. 登录失败
|
|||
|
|
- **检查**:验证码是否正确
|
|||
|
|
- **解决**:使用控制台显示的验证码
|
|||
|
|
|
|||
|
|
#### 3. 网络错误
|
|||
|
|
- **检查**:API地址是否正确
|
|||
|
|
- **解决**:确认域名配置或使用localhost
|
|||
|
|
|
|||
|
|
### 开发模式特性
|
|||
|
|
|
|||
|
|
1. **模拟邮件发送**:
|
|||
|
|
- 验证码在控制台显示
|
|||
|
|
- 无需真实邮件服务
|
|||
|
|
- 适合开发和测试
|
|||
|
|
|
|||
|
|
2. **模拟登录成功**:
|
|||
|
|
- 网络错误时自动降级
|
|||
|
|
- 开发环境友好
|
|||
|
|
- 不影响功能测试
|
|||
|
|
|
|||
|
|
## 📝 测试用例
|
|||
|
|
|
|||
|
|
### 测试用例1:正常流程
|
|||
|
|
1. 输入邮箱:`test@example.com`
|
|||
|
|
2. 点击"获取验证码"
|
|||
|
|
3. 查看控制台验证码:`123456`
|
|||
|
|
4. 输入验证码登录
|
|||
|
|
5. 预期:登录成功
|
|||
|
|
|
|||
|
|
### 测试用例2:错误处理
|
|||
|
|
1. 输入无效邮箱:`invalid-email`
|
|||
|
|
2. 点击"获取验证码"
|
|||
|
|
3. 预期:显示"请输入正确的邮箱地址"
|
|||
|
|
|
|||
|
|
### 测试用例3:验证码错误
|
|||
|
|
1. 输入正确邮箱
|
|||
|
|
2. 获取验证码
|
|||
|
|
3. 输入错误验证码:`000000`
|
|||
|
|
4. 预期:显示"验证码错误或已过期"
|
|||
|
|
|
|||
|
|
## 🚀 生产环境部署
|
|||
|
|
|
|||
|
|
### 配置腾讯云SES
|
|||
|
|
1. 修改 `application-tencent.properties`
|
|||
|
|
2. 设置 `spring.profiles.active=tencent`
|
|||
|
|
3. 配置真实的API密钥和发件人信息
|
|||
|
|
|
|||
|
|
### 环境变量配置
|
|||
|
|
```bash
|
|||
|
|
export TENCENT_SECRET_ID=your-secret-id
|
|||
|
|
export TENCENT_SECRET_KEY=your-secret-key
|
|||
|
|
export SES_FROM_EMAIL=noreply@yourdomain.com
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📊 功能状态
|
|||
|
|
|
|||
|
|
- ✅ 前端界面:完成
|
|||
|
|
- ✅ 后端API:完成
|
|||
|
|
- ✅ 本地测试:完成
|
|||
|
|
- ✅ 开发模式:完成
|
|||
|
|
- ⏳ 腾讯云集成:可选
|
|||
|
|
- ⏳ 生产部署:待配置
|
|||
|
|
|
|||
|
|
## 🎉 总结
|
|||
|
|
|
|||
|
|
邮箱验证码登录功能已完全实现,支持:
|
|||
|
|
- 完整的用户界面
|
|||
|
|
- 后端API接口
|
|||
|
|
- 本地模拟测试
|
|||
|
|
- 开发环境友好
|
|||
|
|
- 生产环境就绪
|
|||
|
|
|
|||
|
|
现在可以开始测试邮箱验证码登录功能了!
|