通过手机短信发送验证码,是最普遍、最安全验证用户真实身份的方式。目前,短信验证码广泛应用于用户注册、密码找回、登录保护、身份认证、随机密码、交易确认等应用场景。
本文以使用 云函数 开发一个短信验证码登录注册服务为例,帮助您了解如何实现短信验证码功能。
除云函数之外,还可通过使用 发送短信接口 实现。
短信签名、短信正文模板提交后,我们会在2个小时左右完成审核,您可以 配置告警联系人 并设置接收模板和签名审核通知,便于及时接收审核通知。
参数 | 取值样例 |
---|---|
签名用途 | 自用(签名为本账号实名认证的公司、网站、产品名等) |
签名类型 | App |
签名内容 | 测试 Demo |
证明类型 | 小程序设置页面截图 |
证明上传 |
参数 | 取值样例 |
---|---|
模板名称 | 验证码短信 |
短信类型 | 普通短信 |
短信内容 | 您的注册验证码:{1},请于{2}分钟内填写,如非本人操作,请忽略本短信。 |
注意:个人认证用户不支持修改频率限制,如需使用该功能,请将 “个人认证” 变更为 “企业认证”,具体操作请参见 实名认证变更指引。
为了保障业务和通道安全,减少业务被刷后的经济损失,建议 设置发送频率限制。
本文以短信的默认频率限制策略为例。
默认情况下,云函数部署在公共网络中,只可以访问公网。如果开发者需要访问腾讯云的 TencentDB 等资源,需要建立私有网络来确保数据安全及连接安全。
注意:私有网络和子网的 CIDR 创建后不可修改。
参数 | 取值样例 |
---|---|
所属地域 | 华南地区(广州) |
名称 | Demo VPC |
IPv4 CIDR | 10.0.0.0/16 |
子网名称 | Demo 子网 |
IPv4 CIDR | 10.0.0.0/16 |
可用区 | 广州三区 |
云数据库 Redis 实例需与 步骤3 配置私有网络的地域和子网的可用区保持一致。
参数 | 取值样例 |
---|---|
计费模式 | 按量计费 |
地域 | 广州 |
数据库版本 | Redis 4.0 |
架构 | 标准架构 |
网络 | Demo VPC,Demo 子网 |
实例名 | 立即命名:Demo 数据库 |
购买数量 | 1 |
云函数目前支持 Python、Node.js、PHP、Java 以及 Golang 语言开发,本文以 Node.js 为例。
参数 | 取值样例 |
---|---|
函数名称 | Demo |
运行环境 | Nodejs 8.9 |
创建方式 | 模板函数:helloworld |
前往 云函数控制台 并选择 SMS Demo 进行部署。
在高级配置中设置 Demo 的环境变量。
字段 | 说明 |
---|---|
REDIS_HOST | Redis 数据库地址 |
REDIS_PASSWORD | Redis 数据库密码 |
SMS_TEMPLATE_ID | 模板 ID,必须填写已审核通过的模板 ID。模板 ID 可登录 短信控制台 查看。 |
SMS_SIGN | 短信签名内容,使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 短信控制台 查看。注:国内短信为必填参数。 |
SMS_SDKAPPID | 短信 SdkAppid 在 短信控制台 添加应用后生成的实际 SdkAppid,示例如1400006666。 |
在高级配置中设置 SCF 运行角色权限。
需要在 访问管理 控制台给 SCF_QcsRole 角色添加短信 QcloudSMSFullAccess 权限
这样代码里就能获取到TENCENTCLOUD_SECRETID、TENCENTCLOUD_SECRETKEY、TENCENTCLOUD_SESSIONTOKEN
环境变量了,发送短信的 sdk 会用到这些环境变量。
点击完成,即可完成函数部署。
创建函数 API网关触发器,请求该触发器地址,即可使用短信相关能力。
验证码的时效性要求较高,您可以把验证码存在内存中或存在云数据库 Redis 中。以手机号作为 key,存储发送时间、验证码、验证次数、是否已验证过等信息。
请求参数:
字段 | 类型 | 说明 |
---|---|---|
method | string | 请求方法,值为 getSms |
phone | string | 手机号,值为区号+手机号,例如86185662466** |
请求参数:
字段 | 类型 | 说明 |
---|---|---|
method | string | 请求方法,值为 login |
phone | string | 手机号,值为区号+手机号,例如86185662466** |
code | string | 值为6位数字验证码 |
字段 | 说明 |
---|---|
InValidParam | 缺少参数 |
MissingCode | 缺少验证码参数 |
CodeHasExpired | 验证码已过期 |
CodeHasValid | 验证码已失效 |
CodeIsError | 请检查手机号和验证码是否正确 |
如有任何疑问,请联系 腾讯云短信小助手,将有专人为您解答。
本页内容是否解决了您的问题?