Files
AIGC/demo/EMAIL_LOGIN_CONFIGURATION_CHECKLIST.md

380 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 邮件登录模块配置清单
## 一、已配置项 ✅
### 1. 开发环境配置application-dev.properties
-`tencent.ses.secret-id` - SecretID已配置
-`tencent.ses.secret-key` - SecretKey已配置
-`tencent.ses.region` - 服务区域ap-beijing
-`tencent.ses.from-email` - 发信地址noreply@vionow.com
-`tencent.ses.from-name` - 发件人名称AIGC平台
-`tencent.ses.template-id` - 模板ID当前为0开发模式
### 2. 代码实现
- ✅ 邮箱验证码登录接口(`/api/auth/login/email`
- ✅ 发送验证码接口(`/api/verification/email/send`
- ✅ 验证码服务VerificationCodeService
- ✅ 腾讯云SES邮件服务TencentSesMailService
- ✅ 前端登录页面Login.vue
- ✅ 用户名密码登录已禁用
---
## 二、需要检查/更新项 ⚠️
### 1. 腾讯云SES服务权限检查 ⚠️ **重要**
**当前配置的账号信息:**
- 主账号ID: `100040185043`
- 用户名: `test`
- SecretID: `AKIDXw8HBtNfjdJm480xljV4QZUDi05wa0DE`
- SecretKey: `tZyHMDsKadS4ScZhhU3PYUErGUVIqBIB`
**需要确认:**
- [ ] **SecretID/SecretKey 是否有效**
- 检查密钥是否过期或被撤销
- 访问https://console.cloud.tencent.com/cam/capi
- [ ] **是否有SES服务访问权限**
- 子账号需要有SES邮件推送服务的访问权限
- 如果没有权限,需要在主账号中授权
**检查步骤:**
1. 登录腾讯云控制台
2. 进入"访问管理" → "API密钥管理"
3. 检查密钥状态
4. 检查子账号权限策略
---
### 2. 发信地址验证 ⚠️ **重要(生产环境必需)**
**当前配置:**
- 发信地址: `noreply@vionow.com`
**需要操作:**
- [ ] **确认发信地址是否已验证**
- 访问https://console.cloud.tencent.com/ses/address
- 检查 `noreply@vionow.com` 的状态
- 如果状态为"未验证"或"验证失败"
**验证步骤:**
1. 进入SES控制台 → "发信地址"
2. 点击"创建发信地址"或编辑现有地址
3. 输入邮箱:`noreply@vionow.com`
4. 腾讯云会发送验证邮件到该邮箱
5. 点击邮件中的验证链接完成验证
6. 确认状态变为"已验证"
**注意:**
- ⚠️ 只有验证通过的邮箱才能发送邮件
- ⚠️ 开发模式template-id=0不需要验证也能测试但不会实际发邮件
- ⚠️ 生产模式必须有已验证的发信地址
---
### 3. 邮件模板配置 ⚠️ **生产环境必需**
**当前状态:**
- `template-id=0` - 开发模式
**开发模式特点:**
- ✅ 不会实际发送邮件
- ✅ 验证码在日志中显示
- ✅ 适合本地测试
**生产环境需要:**
- [ ] **创建邮件模板**
**创建步骤:**
1. 访问https://console.cloud.tencent.com/ses/template
2. 点击"创建模板"
3. 选择模板类型(触发邮件或批量邮件)
4. 填写模板内容,例如:
```
您的AIGC平台验证码是{{code}}
验证码有效期5分钟请勿泄露给他人。
如果不是您本人操作,请忽略此邮件。
```
5. 使用 `{{code}}` 作为验证码变量(必须使用这个变量名)
6. 提交审核
7. 等待审核通过通常需要1-2个工作日
8. 获取模板ID例如`12345`
**更新配置:**
```properties
# 将开发模式改为生产模式
tencent.ses.template-id=12345 # 替换为实际的模板ID
```
---
### 4. 生产环境配置 ⚠️ **缺失**
**当前状态:**
`application-prod.properties` 中**没有腾讯云SES配置**
**需要添加:**
- [ ] **在生产环境配置文件中添加SES配置**
**操作步骤:**
在 `demo/src/main/resources/application-prod.properties` 中添加:
```properties
# 腾讯云SES配置 (生产环境)
tencent.ses.secret-id=${TENCENT_SES_SECRET_ID}
tencent.ses.secret-key=${TENCENT_SES_SECRET_KEY}
tencent.ses.region=ap-beijing
tencent.ses.from-email=${TENCENT_SES_FROM_EMAIL}
tencent.ses.from-name=AIGC平台
tencent.ses.template-id=${TENCENT_SES_TEMPLATE_ID}
```
**环境变量设置:**
```bash
export TENCENT_SES_SECRET_ID=你的SecretID
export TENCENT_SES_SECRET_KEY=你的SecretKey
export TENCENT_SES_FROM_EMAIL=noreply@vionow.com
export TENCENT_SES_TEMPLATE_ID=你的模板ID
```
---
### 5. SES服务开通和额度 ⚠️ **重要**
**需要确认:**
- [ ] **SES服务是否已开通**
- 访问https://console.cloud.tencent.com/ses
- 检查服务状态
- [ ] **是否有可用额度**
- 检查账户余额或免费额度
- 确认是否有足够的邮件发送配额
- 查看计费信息
**检查步骤:**
1. 登录腾讯云控制台
2. 进入SES服务控制台
3. 查看"概览"页面的配额和用量信息
4. 确认是否有可用额度
---
### 6. 测试验证 ⚠️ **重要**
**开发模式测试:**
- [ ] **启动服务并测试**
```bash
cd demo
./mvnw spring-boot:run
```
- [ ] **测试发送验证码**
```bash
curl -X POST http://localhost:8080/api/verification/email/send \
-H "Content-Type: application/json" \
-d '{"email":"test@example.com"}'
```
- [ ] **查看日志**
- 应该看到:"开发模式:邮件验证码发送到: test@example.com, 验证码: 123456"
- 记录验证码用于登录测试
- [ ] **测试登录**
- 访问登录页面
- 输入邮箱和验证码
- 验证登录功能
**生产模式测试:**
- [ ] **更新template-id配置**
- [ ] **重启服务**
- [ ] **发送测试邮件**
- [ ] **检查实际邮箱是否收到邮件**
---
## 三、配置优先级
### 🔴 紧急(必须配置)
1. **发信地址验证** - 生产环境必须验证才能发送邮件
2. **邮件模板创建** - 生产环境必须配置模板ID
3. **生产环境配置** - `application-prod.properties` 缺少SES配置
### 🟡 重要(建议配置)
4. **SES服务权限检查** - 确保账号有权限访问SES服务
5. **SES服务开通和额度** - 确保有可用配额
6. **测试验证** - 确保功能正常
### 🟢 可选(开发环境)
7. **开发模式** - 当前已配置,可直接使用
---
## 四、配置检查清单
### 开发环境配置状态
| 配置项 | 状态 | 说明 |
|--------|------|------|
| SecretID | ✅ 已配置 | 需确认有效性和权限 |
| SecretKey | ✅ 已配置 | 需确认有效性 |
| Region | ✅ 已配置 | ap-beijing |
| From-email | ✅ 已配置 | noreply@vionow.com需确认已验证 |
| From-name | ✅ 已配置 | AIGC平台 |
| Template-id | ⚠️ 开发模式 | 当前为0生产环境需配置实际ID |
### 生产环境配置状态
| 配置项 | 状态 | 说明 |
|--------|------|------|
| SecretID | ❌ 未配置 | 需要添加环境变量 |
| SecretKey | ❌ 未配置 | 需要添加环境变量 |
| Region | ❌ 未配置 | 需要添加配置 |
| From-email | ❌ 未配置 | 需要添加环境变量 |
| From-name | ❌ 未配置 | 需要添加配置 |
| Template-id | ❌ 未配置 | 需要创建模板并配置ID |
---
## 五、快速检查命令
### 检查配置文件
```bash
# Windows PowerShell
Test-Path demo/src/main/resources/application-dev.properties
Test-Path demo/src/main/resources/application-prod.properties
# 检查SES配置项
Select-String -Path "demo/src/main/resources/application-dev.properties" -Pattern "tencent.ses"
```
### 测试邮件发送功能
```bash
# 开发模式测试(不会实际发送邮件)
curl -X POST http://localhost:8080/api/verification/email/send \
-H "Content-Type: application/json" \
-d '{"email":"test@example.com"}'
# 检查日志中的验证码
# 应该看到:开发模式:邮件验证码发送到: test@example.com, 验证码: XXXXXX
```
### 测试登录功能
```bash
# 使用开发接口设置验证码(开发模式)
curl -X POST http://localhost:8080/api/verification/email/dev-set \
-H "Content-Type: application/json" \
-d '{"email":"test@example.com","code":"123456"}'
# 测试登录
curl -X POST http://localhost:8080/api/auth/login/email \
-H "Content-Type: application/json" \
-d '{"email":"test@example.com","code":"123456"}'
```
---
## 六、常见问题
### Q1: 开发模式下收不到邮件?
**A:** 这是正常的开发模式template-id=0不会实际发送邮件验证码会在日志中显示。
### Q2: 发送失败 - 认证错误
```
InvalidSecretId.InvalidSignature
```
**解决:**
- 检查SecretID和SecretKey是否正确
- 确认密钥是否有SES服务权限
- 检查密钥是否过期
### Q3: 发送失败 - 发信地址未验证
```
InvalidParameter.EmailAddressNotVerified
```
**解决:**
- 在SES控制台验证发信地址
- 检查 `tencent.ses.from-email` 配置是否正确
- 注意开发模式template-id=0不需要验证也能测试
### Q4: 发送失败 - 模板不存在
```
ResourceNotFound.TemplateNotFound
```
**解决:**
- 确认模板ID是否正确
- 检查模板是否已审核通过
- 确认模板区域与配置的region一致
### Q5: 如何切换到生产模式?
**A:**
1. 验证发信地址
2. 创建邮件模板并获取模板ID
3. 更新 `tencent.ses.template-id` 配置
4. 重启服务
5. 测试实际发送邮件
---
## 七、下一步操作建议
### 立即可做(开发测试)
1. ✅ **保持当前配置**(开发模式)
2. ✅ **启动服务测试登录功能**
3. ✅ **使用日志中的验证码进行测试**
### 生产环境准备(如需要)
1. ⚠️ **验证发信地址**
- 在SES控制台验证 `noreply@vionow.com`
2. ⚠️ **创建邮件模板**
- 创建验证码邮件模板
- 等待审核通过
- 获取模板ID
3. ⚠️ **更新生产环境配置**
- 在 `application-prod.properties` 中添加SES配置
- 设置环境变量
4. ⚠️ **测试生产模式**
- 更新template-id配置
- 重启服务
- 测试实际发送邮件
---
## 八、相关文档链接
- **腾讯云SES控制台**: https://console.cloud.tencent.com/ses
- **发信地址管理**: https://console.cloud.tencent.com/ses/address
- **邮件模板管理**: https://console.cloud.tencent.com/ses/template
- **API密钥管理**: https://console.cloud.tencent.com/cam/capi
- **SES文档**: https://cloud.tencent.com/document/product/1288
- **邮箱验证登录指南**: `EMAIL_VERIFICATION_LOGIN_GUIDE.md`
- **SES启动检查清单**: `TENCENT_SES_STARTUP_CHECKLIST.md`
---
## 九、总结
### 当前状态
-**开发环境配置已完成**,可以直接启动测试
-**开发模式已启用**template-id=0不会实际发送邮件
- ⚠️ **生产环境配置缺失**需要添加SES配置
### 最小启动要求(开发模式)
1. ✅ SecretID和SecretKey已配置
2. ✅ From-email地址已配置
3. ✅ Template-id=0开发模式已配置
### 生产环境要求
1. ⚠️ 已验证的发信地址
2. ⚠️ 已审核通过的邮件模板
3. ⚠️ 生产环境配置文件中的SES配置
4. ⚠️ 有效的SecretID/SecretKey和SES服务权限
**当前可以:** 直接在开发模式下启动并测试登录功能(验证码在日志中显示)
**如需实际发送邮件:** 需要完成上述生产环境配置项