短信通知通知
详情介绍
一、插件简介
短信通知(sms)面向社区站点,对接 阿里云短信服务,支持号码认证验证码(SendSmsVerifyCode)与普通短信(SendSms)。涵盖注册/找回/绑定手机验证码、手机快捷登录、登录提醒与后台敏感操作通知。
适合需要手机号验证、快捷登录、安全告警的站点。
- 前台入口:
- 注册、找回密码、绑定手机验证码
- 登录弹窗「手机快捷登录」图标(
auth_login_extra插槽) - 后台入口:插件列表 → 短信通知(
/admin/sms) - 主要接口(伪静态后缀下同):
POST /sms/sendCode— 发送验证码POST /sms/login— 手机验证码登录
二、核心能力
| 能力 | 说明 |
|---|---|
| 号码认证验证码 | 阿里云 SendSmsVerifyCode(dypns 产品) |
| 普通短信 | 阿里云 SendSms(dysmsapi) |
| 注册验证码 | 注册须验证手机号 |
| 找回密码 | 手机验证码重置 |
| 绑定手机 | 绑定/更换手机验证 |
| 手机快捷登录 | 登录弹窗验证码登录,可自动注册 |
| 登录提醒 | 用户/管理员登录成功后发短信 |
| 操作通知 | 后台敏感操作后发短信 |
| 模板管理 | 后台维护模板 CODE 与变量 |
| 发送记录 | 查看状态与错误 |
三、依赖与安装
建议环境:
- 阿里云账号,开通短信服务与(可选)号码认证服务
- 已审核通过的短信 签名
- 各场景对应的阿里云 模板 CODE
- 建议创建仅含短信权限的 RAM 子账号 AccessKey
安装步骤:
- 应用中心安装并启用 短信通知
- 进入 短信通知 → 短信配置,填写 AccessKey、Region、签名等
- 在 模板管理 中配置各场景模板 CODE 与变量
- 应用中心开启所需功能开关
- 发送测试短信验证
- 走通注册/登录/通知流程
数据表:
{prefix}sms_template、{prefix}sms_log、{prefix}sms_code
场景常量: register、reset、bind、phone_login、login、operation
四、应用中心基础配置
路径:应用中心 → 短信通知 → 配置
| 配置项 | 说明 | 建议 |
|---|---|---|
| 启用短信通知 | 总开关 | 保持开启 |
| 登录短信提醒 | 登录成功后通知 | 按需(注意费用) |
| 敏感操作短信提醒 | 后台删改等操作后通知 | 安全要求高时开启 |
| 注册手机验证码 | 注册须验证手机 | 按需 |
| 找回密码验证码 | 找回须手机验证 | 按需 |
| 绑定/更换手机验证码 | 绑定须验证 | 建议开启 |
| 手机快捷登录 | 登录弹窗显示手机登录入口 | 按需 |
| 手机登录自动注册 | 未注册号验证通过后自动建号 | 默认开启 |
AccessKey、签名、Endpoint 等在后台 短信配置 页维护。
五、后台重点配置
路径:插件列表 → 短信通知
5.1 短信配置(/admin/sms)
| 项 | 说明 | 默认 |
|---|---|---|
| access_key_id / access_key_secret | 阿里云密钥 | — |
| region_id | 区域 | cn-hangzhou |
| sign_name | 短信签名 | — |
| verify_product | dypns(号码认证)/ sms | dypns |
| verify_endpoint | 号码认证 Endpoint | dypnsapi.aliyuncs.com |
| sms_endpoint | 普通短信 Endpoint | dysmsapi.aliyuncs.com |
| code_ttl | 验证码有效期(秒) | 600 |
| code_interval | 发送间隔(秒) | 60 |
| code_daily | 每日同号上限 | 10 |
aliyunReady 条件: 启用 + AccessKey + 签名均已配置。
5.2 模板管理
默认含 phone_login(手机快捷登录)等模板;变量需与阿里云审核模板一致。
常见变量:{code}、{expire_minutes} 等。
5.3 发送记录
查看每条短信状态、错误码;支持删除与清空。
六、前台用户流程
手机快捷登录
- 登录弹窗见手机图标(需开启「手机快捷登录」)
- 输入手机号,获取验证码(
POST /sms/sendCode,scene=phone_login) - 提交验证码登录(
POST /sms/login) - 未注册且开启自动注册则创建账号
注册/找回/绑定
与邮件插件类似,通过 sendCode 接口,scene 分别为 register / reset / bind。
登录/操作通知(用户无感)
- 前台/后台登录成功 → 若用户/管理员填写了
mobile且开关开启则发短信 - 后台敏感操作写入操作日志时触发通知
七、后台审核与运维
| 操作 | 说明 |
|---|---|
| 测试发送 | 验证密钥与签名 |
| 模板维护 | 与阿里云控制台模板 CODE 保持一致 |
| 日志审计 | 排查失败原因(欠费、模板不匹配、签名未审等) |
| 管理员手机号 | 填写在 admin.mobile |
| 用户手机号 | 填写在 user.mobile |
八、特殊说明
插件钩子:
auth_login_extra— 登录弹窗注入手机快捷登录按钮
用户表迁移: 添加 mobile_verified 列;已有手机号默认已验证。
管理员表迁移: 添加 mobile 列供操作通知使用。
触发点(插件 README):
- 前台登录:
plugins/community/controller/Index.php::doLogin() - 后台登录:
app/controller/admin/Login.php::check() - 后台操作:
app/service/OperationLogService::write()
手机号校验: 中国大陆 11 位,normalizeMobile 去除非数字。
九、推荐上线清单
- 阿里云签名与模板审核通过
- 配置 RAM 子账号 AccessKey(最小权限)
- 后台填写完整参数并测试
- 模板 CODE 与变量名逐一核对
- 按需开启验证码与快捷登录
- 为管理员填写手机号(若开操作通知)
- 测试:发码 → 登录 → 查看发送记录
十、常见问题
Q:登录弹窗没有手机图标? 确认「手机快捷登录」开启且 aliyunReady 为真。
Q:提示模板不存在? 后台模板 CODE 须与阿里云一致,且模板已审核通过。
Q:登录提醒没收到? 检查用户/管理员是否填写手机号、开关是否开启;通知失败不阻断登录。
Q:号码认证 vs 普通短信? 验证码推荐 dypns + SendSmsVerifyCode;通知类用 SendSms。
Q:自动注册关闭后? 仅已绑定手机号的账号可通过快捷登录进入。
Q:每日上限触发? 调整 code_daily 或等待次日;防刷设计。
更新记录 (2)
-
v1.0.2
2026-08-30
1、适配开启「邀请成功需校验」时,短信验证通过也能立刻结算邀请奖励。
-
v1.0.1
2026-08-24
首次发布