登录注册、手机号、邮箱

This commit is contained in:
2025-11-03 13:37:55 +08:00
parent 16754b527e
commit 35aee59178
26 changed files with 4292 additions and 163 deletions

View File

@@ -0,0 +1,253 @@
# 阿里云短信服务配置完整指南
## 一、前期准备
### 1. 注册阿里云账号
访问 https://www.aliyun.com/ 注册账号并完成实名认证
### 2. 开通短信服务
1. 登录阿里云控制台
2. 搜索"短信服务"并开通
3. 进入短信服务控制台https://dysms.console.aliyun.com/
## 二、创建短信签名
### 1. 申请签名
- 进入【国内消息】->【签名管理】
- 点击【添加签名】
- 填写签名信息:
- **签名名称**:红色思政学习平台
- **签名来源**:网站(需要提供网站备案信息)
- **签名场景**:验证码
- **签名说明**:用于用户注册和登录验证
- **资质证明**:上传相关资质文件
### 2. 审核时间
通常1-2个工作日审核完成
## 三、创建短信模板
### 1. 申请模板
- 进入【国内消息】->【模板管理】
- 点击【添加模板】
- 填写模板信息:
- **模板类型**:验证码
- **模板名称**:注册验证码
- **模板内容**:您的验证码为:${code}该验证码10分钟内有效请勿泄漏于他人
### 2. 注意事项
- 模板必须包含变量:`${code}`
- 验证码模板必须说明有效期
- 必须包含防骗提示语
### 3. 审核时间
通常1-2个工作日审核完成
### 4. 获取模板CODE
审核通过后会生成模板CODE格式如`SMS_123456789`
## 四、创建RAM用户推荐
### 1. 为什么使用RAM用户
- 主账号权限过大,不安全
- RAM用户可以精细化权限控制
- 方便管理多个应用的访问权限
### 2. 创建步骤
#### 步骤1进入访问控制
访问https://ram.console.aliyun.com/users
#### 步骤2创建用户
1. 点击【创建用户】
2. 填写用户信息:
- **登录名称**school-news-sms
- **显示名称**:红色思政短信服务
- **访问方式**勾选【OpenAPI调用访问】
#### 步骤3保存AccessKey
创建成功后,**立即下载CSV文件保存AccessKey信息**(只显示一次!)
- AccessKey IDLTAI5txxxxxxxxxxxxxxxxxx
- AccessKey Secretxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
#### 步骤4授权
1. 找到刚创建的用户
2. 点击【添加权限】
3. 搜索并添加权限:`AliyunDysmsFullAccess`(短信服务完全访问权限)
## 五、配置项目
### 1. 在 application.yml 中配置
```yaml
aliyun:
sms:
# 是否启用阿里云短信服务true: 真实发送, false: 模拟模式)
enabled: true
# AccessKey ID从RAM用户获取
access-key-id: LTAI5txxxxxxxxxxxxxxxxxx
# AccessKey Secret从RAM用户获取
access-key-secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# 短信签名名称(审核通过后的签名名称)
sign-name: 红色思政学习平台
# 验证码模板CODE审核通过后的模板CODE
template-code: SMS_123456789
# 区域ID
region-id: cn-hangzhou
```
### 2. 开发环境配置
开发环境建议使用模拟模式:
```yaml
aliyun:
sms:
enabled: false # 关闭真实发送
access-key-id:
access-key-secret:
sign-name: 红色思政学习平台
template-code:
region-id: cn-hangzhou
```
**模拟模式特点**
- 不会实际发送短信(节省费用)
- 验证码会在控制台日志中输出
- 适合开发和测试
### 3. 生产环境配置
生产环境使用真实发送:
```yaml
aliyun:
sms:
enabled: true # 开启真实发送
access-key-id: ${ALIYUN_SMS_ACCESS_KEY_ID} # 从环境变量读取
access-key-secret: ${ALIYUN_SMS_ACCESS_KEY_SECRET} # 从环境变量读取
sign-name: 红色思政学习平台
template-code: SMS_123456789
region-id: cn-hangzhou
```
## 六、测试验证
### 1. 启动项目
```bash
cd schoolNewsServ/admin
mvn spring-boot:run
```
### 2. 测试发送验证码
使用 Postman 或 curl 测试:
```bash
curl -X POST http://localhost:8081/schoolNewsServ/auth/send-sms-code \
-H "Content-Type: application/json" \
-d '{"phone":"13800138000"}'
```
### 3. 查看日志
**模拟模式**
```
【模拟发送】短信验证码,手机号: 13800138000, 验证码: 123456
```
**真实发送**
```
阿里云短信发送成功,手机号: 13800138000, BizId: 123456789^0
```
## 七、费用说明
### 1. 收费标准
- **验证码短信**:约 ¥0.045/条
- **通知短信**:约 ¥0.045/条
- **推广短信**:约 ¥0.055/条
### 2. 充值方式
1. 进入短信服务控制台
2. 点击【充值】
3. 选择充值金额建议先充值100元测试
### 3. 余额查询
控制台首页可查看账户余额和使用情况
## 八、常见问题
### 1. 签名审核不通过
- **原因**:资质不全、信息不符
- **解决**:按审核意见补充资料,重新提交
### 2. 模板审核不通过
- **原因**:内容不规范、缺少必要信息
- **解决**:修改模板内容,确保包含:
- 验证码变量 `${code}`
- 有效期说明
- 防骗提示
### 3. 发送失败isv.BUSINESS_LIMIT_CONTROL
- **原因**:短信发送频率过高
- **解决**
- 同一手机号1分钟内只能发送1条
- 同一手机号1小时内最多发送5条
- 同一手机号1天内最多发送10条
### 4. 发送失败isv.AMOUNT_NOT_ENOUGH
- **原因**:账户余额不足
- **解决**:充值
### 5. 发送失败isv.MOBILE_NUMBER_ILLEGAL
- **原因**:手机号格式错误
- **解决**:检查手机号是否正确
### 6. 代码中看不到验证码
- **原因**enabled=true 时真实发送,不会在日志输出
- **解决**
- 开发环境设置 `enabled: false`
- 或查看手机短信
## 九、安全建议
### 1. AccessKey 安全
- ❌ 不要将 AccessKey 直接写在代码中
- ❌ 不要将 AccessKey 提交到 Git 仓库
- ✅ 使用环境变量或配置中心
- ✅ 定期更换 AccessKey
- ✅ 使用 RAM 用户而非主账号
### 2. 防刷机制
系统已实现:
- ✅ 60秒发送频率限制
- ✅ 验证码10分钟有效期
- ✅ Redis存储验证码
- ✅ 手机号格式验证
建议增加:
- 图形验证码
- IP限流
- 黑名单机制
### 3. 监控告警
- 设置短信发送量告警
- 监控异常发送行为
- 定期查看短信发送报表
## 十、技术支持
- 阿里云短信服务文档https://help.aliyun.com/product/44282.html
- 工单咨询https://selfservice.console.aliyun.com/ticket/createIndex
- 电话客服95187
---
**最后提醒**
1. 开发环境务必使用 `enabled: false` 避免浪费
2. AccessKey 信息要妥善保管
3. 注意短信发送频率限制
4. 定期查看账户余额