注册容联云账号

1.注册容联云账号

1.1 注册账号

https://www.yuntongxun.com/user/login
在这里插入图片描述

1.2 登录即可看到开发者账号信息

在这里插入图片描述

1.3 添加测试账号

在这里插入图片描述

2.使用容联云发送代码测试

'''1. 安装容联云sdk''' 
pip install ronglian_sms_sdk 
# 免费测试文档地址:https://doc.yuntongxun.com/p/5a531a353b8496dd00dcdfe2 

'''2. 短信发送代码''' 
# libs/rl_sms.py 
from ronglian_sms_sdk import SmsSDK 
accId = '8a216da8747ac98201749c0de38723b7' 
accToken = '86072b540b4648229b27400414150ef2' 
appId = '8a216da8747ac98201749c0de45123be' 

def send_message(phone, datas): 
    sdk = SmsSDK(accId, accToken, appId) 
    tid = '1' # 测试模板id为: 
    '''
    1. 内容为: 【云通讯】您的验证码是{1},请于{2}分钟内正确输 入。 
    '''
    # mobile = '13303479527' 
    # datas = ('666777', '5') # 模板中的参数按照位置传递 
    resp = sdk.sendMessage(tid, phone, datas) 
    return resp

3.在视图函数中使用

3.1 在 vuerifications/urls.py 中添加路由
urlpatterns = [ 
    path('sms_codes/', views.SmsCodeView.as_view()), 
]
3.2 写视图函数

在这里插入图片描述

# verifications/views.py 
from rest_framework.permissions import AllowAny 
from rest_framework.views import APIView 
from rest_framework.response import Response 
import re 
import random 
from utils.rl_sms import send_message

class SmsCodeView(APIView): 
    # 1. 所有人可以访问 
    permission_classes = (AllowAny,) 
    
    def post(self, request): 
        # 1. 获取参数 
        phone = request.data.get('phone') 
        image_code = request.data.get('image_code') # 字符串验证码
        image_code_uuid = request.data.get('image_code_uuid') # 前端生成的uuid, 是redis中图片验证码的key 
        # 2. 检查参数是否完整 
        if not all([phone, image_code, image_code_uuid]): 
            return Response({"code": 999, "msg": "参数不全"}) 
        if not re.match(r'^1[3456789]\d{9}$', phone): 
            return Response({"code": 999, "msg": "手机号码不正确"}) 
        
        # 3. 检查是否已经发送过 
        redis_client = get_redis_connection('img_code') # 连接redis 
        phone_exists = redis_client.get(phone) 
        if phone_exists: 
            return Response({"code": 999, "msg": "频繁发送, 请稍后再试"}) 
        
        # 4.检查图片验证码是否合法 
        redis_image_code = redis_client.get(image_code_uuid) # 字符串验证码
        if redis_image_code: 
            # bytes 转成 string 
            redis_image_code = redis_image_code.decode() 
        # 比较用户提供的图片内容是否和redis中保存的一致 
        if image_code.upper() != redis_image_code: 
            return Response({'code': 999, 'msg': '图片验证码不正确'}) 
        
        # 5. 发送 
        code = '%06d' % random.randint(0, 999999) # 随机6位验证码 
        send_resp = send_message(phone, (code, "5")) 
        
        # 5.1 保存code 到 redis中 
        # redis_client.setex(phone, 60 * 5, code) # phone:code, 5分钟有效期 
        
        # 5.2 从redis中删除这个图片验证码, 以防再次被使用 
        # redis_client.delete(image_code_uuid) 
        
        # 6.存储这个已经出发发送的手机号,防止频繁发送 (使用 pipeline 批量操作) 
        pl = redis_client.pipeline() # 实例化一个pipeline对象 
        pl.setex(phone, 60 * 5, code) 
        pl.delete(image_code_uuid) 
        pl.execute() 
        
        # 6. 返回结果 
        return Response({"code": 0, "msg": "短信发送成功"})

pl.execute()

    # 6. 返回结果 
    return Response({"code": 0, "msg": "短信发送成功"})









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Node.js实现容联云短信验证登录时,你可以按照以下步骤进行操作: 1. 首先,确保你已经注册容联云通讯的账号并且拥有足够的短信发送额度。 2. 在你的Node.js项目中,安装express框架和相关依赖。 3. 创建一个名为getMessage.js的工具文件,并在其中编写生成随机验证码和发送短信的函数。你可以使用Math.random()和Math.floor()等方法生成6位数字随机验证码。 4. 在你的主文件中,引入express框架和getMessage.js工具文件,并创建一个express的实例。 5. 设置一个路由,比如"/login",在该路由中调用randomCode()函数生成随机验证码,并调用sendCode()函数将验证码发送到指定的手机号码上。 6. 在sendCode()函数中,你可以使用容联云通讯提供的短信发送接口来发送短信。你可以根据文档中提供的参数和接口说明来调用相应的接口进行短信发送。 7. 在sendCode()函数中,根据短信发送的结果,返回相应的响应给前端。 8. 启动你的Node.js服务器,监听指定的端口,比如4200,并在控制台打印服务器的地址和端口信息。 9. 当用户访问"/login"路由时,会生成一个随机验证码并发送到指定手机号码上。根据短信发送的结果,服务器会返回相应的响应给前端。 请注意,以上只是一个简单的示例,你可以根据你的实际需求进行相应的修改和扩展。详细的代码实现和配置细节可以参考容联云通讯的文档以及相关的Node.js开发文档。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值