- 新增VerificationCodeService:验证码生成、发送、验证 - 新增VerificationCodeController:验证码相关API接口 - 扩展AuthApiController:支持邮箱验证码登录 - 扩展UserRepository和UserService:支持邮箱查找用户 - 使用内存存储验证码,无需Redis依赖 - 添加腾讯云配置支持(可选) - 实现安全机制:频率限制、有效期、一次性使用 - 添加详细文档说明
120 lines
2.9 KiB
Markdown
120 lines
2.9 KiB
Markdown
# 腾讯云邮箱验证码登录配置指南
|
||
|
||
## 1. 腾讯云服务开通
|
||
|
||
### 1.1 开通邮件推送服务(SES)
|
||
1. 登录腾讯云控制台
|
||
2. 进入"邮件推送"服务
|
||
3. 开通邮件推送服务
|
||
4. 配置发件人邮箱
|
||
5. 申请邮件模板
|
||
|
||
### 1.2 获取API密钥
|
||
1. 进入"访问管理" -> "API密钥管理"
|
||
2. 创建密钥,获取SecretId和SecretKey
|
||
|
||
## 2. 配置参数
|
||
|
||
### 2.1 修改配置文件
|
||
编辑 `src/main/resources/application-tencent.properties`:
|
||
|
||
```properties
|
||
# 腾讯云配置
|
||
tencent.cloud.secret-id=你的SecretId
|
||
tencent.cloud.secret-key=你的SecretKey
|
||
|
||
# 邮件推送服务配置
|
||
tencent.cloud.ses.region=ap-beijing
|
||
tencent.cloud.ses.from-email=你的发件人邮箱
|
||
tencent.cloud.ses.from-name=你的应用名称
|
||
tencent.cloud.ses.template-id=你的邮件模板ID
|
||
```
|
||
|
||
### 2.2 邮件模板示例
|
||
```html
|
||
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<title>验证码</title>
|
||
</head>
|
||
<body>
|
||
<h2>验证码</h2>
|
||
<p>您的验证码是:<strong>{{code}}</strong></p>
|
||
<p>请在5分钟内输入,如非本人操作,请忽略此邮件。</p>
|
||
</body>
|
||
</html>
|
||
```
|
||
|
||
## 3. Redis配置
|
||
|
||
### 3.1 安装Redis
|
||
- Windows: 下载Redis for Windows
|
||
- Linux: `sudo apt-get install redis-server`
|
||
- macOS: `brew install redis`
|
||
|
||
### 3.2 启动Redis
|
||
```bash
|
||
redis-server
|
||
```
|
||
|
||
### 3.3 配置Redis连接
|
||
修改 `application-tencent.properties` 中的Redis配置:
|
||
```properties
|
||
spring.data.redis.host=localhost
|
||
spring.data.redis.port=6379
|
||
spring.data.redis.password=
|
||
spring.data.redis.database=0
|
||
```
|
||
|
||
## 4. 测试验证码功能
|
||
|
||
### 4.1 发送邮件验证码
|
||
```bash
|
||
curl -X POST http://localhost:8080/api/verification/email/send \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"email": "test@example.com"}'
|
||
```
|
||
|
||
### 4.2 验证码登录
|
||
```bash
|
||
# 邮箱验证码登录
|
||
curl -X POST http://localhost:8080/api/auth/login/email \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"email": "test@example.com", "code": "123456"}'
|
||
```
|
||
|
||
## 5. 安全注意事项
|
||
|
||
1. **API密钥安全**:不要将SecretId和SecretKey提交到代码仓库
|
||
2. **验证码有效期**:验证码5分钟过期
|
||
3. **发送频率限制**:同一邮箱60秒内只能发送一次
|
||
4. **验证码长度**:6位数字验证码
|
||
5. **Redis安全**:生产环境建议设置Redis密码
|
||
|
||
## 6. 故障排除
|
||
|
||
### 6.1 常见错误
|
||
- `TencentCloudSDKException`: 检查API密钥和配置
|
||
- `Redis连接失败`: 检查Redis服务是否启动
|
||
- `验证码发送失败`: 检查腾讯云服务配置
|
||
|
||
### 6.2 日志查看
|
||
查看应用日志中的验证码相关日志:
|
||
```bash
|
||
tail -f logs/application.log | grep "验证码"
|
||
```
|
||
|
||
## 7. 生产环境部署
|
||
|
||
### 7.1 环境变量配置
|
||
```bash
|
||
export TENCENT_SECRET_ID=你的SecretId
|
||
export TENCENT_SECRET_KEY=你的SecretKey
|
||
export REDIS_HOST=你的Redis主机
|
||
export REDIS_PORT=你的Redis端口
|
||
```
|
||
|
||
### 7.2 配置文件
|
||
使用环境变量覆盖配置文件中的敏感信息。
|