SmsCode

PHP配置阿里云短信

烂漫一生 提交于 2020-12-16 06:37:51
目录 1. 前言 2. 细读官方手册 3. 短信接口SDK包下载和配置 3.1 SDK下载 (1)官方链接下载 (2)composer下载 3.2 封装发送手机短信验证码功能类 3.2.1 密钥举例 3.2.2 封装调用SDK类 3.2.3 测试用例实战 3.2.4 测试用例结果 3.2.5将测试用例封装成常用类 3.2.6界面可视化 4. 总结 1.前言 之前我写过一篇‘发送手机短信验证实战’,用的是云之讯平台的短信接口,但相比而言,目前市面上用的大多是阿里云和腾讯云的短信接口,刚好,我公司也使用阿里云的短信接口(新版SDK),下面我们一起来进行阿里云短信接口的调用和需求功能封装吧! 代码分享: https://github.com/mtdgclub/aliyunSmsDemo 2.细读官方手册 由手册我们可以知道,阿里云为我们提供了两种短信发送接口: SendSms接口是短信发送接口,支持在一次请求中向多个不同的手机号码发送同样内容的短信。 SendBatchSms接口 是 在一次请求中分别向多个不同的手机号码发送不同签名和模版内容的短信 。 而我这里主要用的是 SendSms接口 。 官方入门手册: https://helpcdn.aliyun.com/document_detail/53111.html SendSms接口 介绍: https://help.aliyun

Django 学习之Celery(芹菜)

六月ゝ 毕业季﹏ 提交于 2020-04-28 05:08:34
Celery 介绍 文档:http://docs.celeryproject.org/en/latest/index.html Celery 是一个功能完备,即插即用的异步任务队列,可以独立于主进程运行,在主进程退出后,也不影响队列中的任务的执行。 任务执行异常退出,重新启动后,会继续执行队列中的其他任务,同时可以缓存停止期间接收的工作任务,这个功能依赖于消息队列(RabbitMQ, Redis等) Celery 特点 简单,易于使用和维护,有丰富的文档 高效,单个Celery 进程 每分钟可以处理数百万个任务 灵活,Celery 种几乎每个部分都可以自定义扩展 Celery 非常易于集成到一些Web开发框架中 Celery角色 Celery clinet: 这是任务生产者,它负责将任务(tasks)发送到broker中 Broker:b roker 负责将任务分发给响应的Celery worker Celery worker: 这是任务的执行者,完成相应的业务逻辑,在具体实现上体现为Python 函数 实现过程 Celery 通过消息进行通信,通常使用一个叫broker(中间人)来协作client(任务的发出者)和worker(任务的处理者),client 发出消息到队列中,broker将队列中的消息发给worker 来处理

vue_drf之实现短信验证码

只谈情不闲聊 提交于 2020-04-24 09:22:33
  一、需求   1,需求   我们在做网站开发时,登录页面很多情况下是可以用手机号接收短信验证码,然后实现登录的,那我们今天就来做一做这一功能。   伪代码: 进入登录页面,点击短信登录 输入手机号码,点击获取验证码,后端在redis里保存验证码 用户把手机收到的验证码输入,点击登录,会把手机号和验证码发往后端,然后进行验证   2,依赖   要想发送短信,让用户收到短信,我们的借助一个容联云的接口,注册一个账号。   使用时需要的一些参数:   下载sdk   1.。。。。。。。   2.。。。。。。   3.。。。。。。。   下载完成后,解压。放入我们drf项目的apps里的libs里   二、sdk参数配置   1,目录结构   2,配置sms.py文件 # -*- coding:utf-8 -*- from .CCPRestSDK import REST # 说明:主账号,登陆云通讯网站后,可在"控制台-应用"中看到开发者主账号ACCOUNT SID _accountSid = ' xxxxxxxxxxxxx ' # 8a216da863f8e6c20164139687e80c1b # 说明:主账号Token,登陆云通讯网站后,可在控制台-应用中看到开发者主账号AUTH TOKEN _accountToken = ' xxxxxxxxxxxxx ' #

Django商城项目笔记No.5用户部分-注册接口-短信验证码

旧城冷巷雨未停 提交于 2020-04-22 05:13:53
Django商城项目笔记No.4用户部分-注册接口-短信验证码 短信验证码也保存在redis里(sms_code_15101234567) 在views 中新增 SMSCodeView 类视图,并且写出步骤如下: 写逻辑 因为这里要用到序列化器,所以就继承了GenericAPIView ,这样的话,可以指定 serializer_class ,然后通过 get_serializer 就可以实例化序列化器了。 注意 : 既然继承了 GenericAPIView ,那为啥不设置 queryset 属性,只设置了 serializer_class 属性了呢? 这里用到谁,就设置谁。 GenericAPIView 没有要求必须都设置的。 发送短信验证码序列化器实现 让序列化器对于参数做校验,只校验image_code_id和text即可,手机号是在路由中,手机号不对的话也进不来这个视图函数 最后一个逻辑,判断是否在60s 内,是如何获取 mobile 的,分析如下: 首先先来看下序列化器的 context 属性: 在自己创建序列化器的时候,可以指定 context ,来传递数据。 那么 GenericAPIView 提供的 get_serializer 方法在创建序列化器的时候,也指定了 context ,并且给 context 添加了三个数据: 所以如下 发送短信验证码视图实现

自设计比较通用的短信验证码处理框架

[亡魂溺海] 提交于 2020-03-10 19:55:08
前言 使用手机的短信验证码来验证真实的用户身份,几乎是互联网网站以及App标配的功能之一。也就是开发这类系统,基本上都包含了这类功能点。本文将简单介绍开发一个较为通用的短信验证码处理框架的设计。基本上通过简易修改就可以用在自己的项目上。 以下是由底层一直往上到应用接口层的设计思路: 1,数据库设计: 数据库建表参考代码如下: CREATE TABLE `sms_verify_code` ( `id` int(11) NOT NULL AUTO_INCREMENT, `phone` varchar(19) NOT NULL COMMENT '电话号码', `code` varchar(8) NOT NULL COMMENT '验证码', `datetime` datetime DEFAULT NULL COMMENT '发送时间', `usage_type` tinyint(4) DEFAULT '0' COMMENT '使用类型(辅助字段,一般用于区分验证码的用途,譬如普通身份验证短信,还是涉及金额的验证短信)', `valid` varchar(1) DEFAULT NULL COMMENT '目前是否生效', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=238 DEFAULT CHARSET=utf8mb4 COMMENT

使用位运算存储用户状态

二次信任 提交于 2020-03-09 11:01:36
背景 很多项目中都会存储用户状态,诸如用户类型、相关操作权限等等。 比较常用的方案有两种。 使用一个int类型字段存储用户状态,不同的数字代表不同的状态 比较特殊的状态需要另外使用字段存储 方案一的问题在于无法存储复合状态。例如某个用户既是普通用户又处于封禁状态,想要使用方案一存储则数字会相当的多,不利于开发记忆。 因此我使用 位运算 方案来存储状态 思路 位运算的思路为利用一个int(或者long)的不同位来存储不同状态。 例如 状态数字 10 ,换算成二进制长这样: 1010 这样一看,一个数字 10 就有四个位,可以存储四个状态。 这个状态就可以这样解释: 最低位的0代表这是一个普通用户 第二低的1代表用户未曾登录 第二高的0代表用户可以使用手机号登录 最高位的1代表用户要接收消息通知 当然,每一位代表的意义在此并不重要。重要的是,每一个bit有两种状态:0和1,需要定义的是0代表enable还是1代表disable。这影响的是每一个bit的实际意义,也和接下来的方法定义有关。 同时,为了后续扩展,在进行状态定义的时候,最好要从低位往高位定义,高位未定义时必定为0。当用户需要增加新状态时,将新状态定义为1,那么原本的用户的状态数据可以不作修改。 存储效率: 以int类型为例,int占4个字节,共有4x8=32位,意为可以同时存储 32 种不同的状态,在实际意义上则代表 2

【Spring Security + OAuth2 + JWT入门到实战】9. 短信验证码之发送验证码

眉间皱痕 提交于 2020-03-03 18:17:56
简介 Security默认是不支持手机短信验证码登录因此整个认证流程需要我们自己开发,这里我们分多篇文章讲解这篇文章只完成发送手机验证码 短信验证码实体类 spring-security-core项目com.spring.security.validate.code路径SmsCode类 import lombok.Data; import java.awt.image.BufferedImage; import java.time.LocalDateTime; /** * 手机验证码 * */ @Data public class SmsCode { private String code; private LocalDateTime expireTime; public SmsCode(String code, int expireIn) { this.code = code; this.expireTime = LocalDateTime.now().plusSeconds(expireIn); } public boolean isExpire() { return LocalDateTime.now().isAfter(expireTime); } } 发现图形验证码的实体类字段是包含手机验证码的实体类字段,改造图形验证码的实体类继承手机验证码的实体类 修改

缓存抽象层Spring cache实战操作

偶尔善良 提交于 2019-12-07 08:18:32
Spring缓存抽象 Spring从3.1开始定义了一系列抽象接口来统一不同的缓存技术;并支持使用JCache(JSR-107)注解简化我们进行缓存开发。Spring Cache 只负责维护抽象层,具体的实现由你的技术选型来决定。将缓存处理和缓存技术解除耦合。 依赖引入 Spring cache 抽象由spring-context相关组件实现。非Spring Boot 项目可通过引入该模块进行集成。 Spring Boot 项目可引入以下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> 同时可能需要引入你采用的缓存中间件客户端;比如 Ehcache、redis等。 两个重要抽象概念 Cache 缓存抽象规范接口,定义缓存一些了操作。实现有:RedisCache、EhCacheCache、ConcurrentMapCache等 CacheManager 缓存管理器,管理Cache的生命周期。 常用的一些注解 Spring cache 提供了一系列的注解,将我们从编程开发中解放出来。让我们更加关注于业务开发。 @EnableCaching 该注解是启用Spring cache 的开关

缓存抽象层Spring cache实战操作

偶尔善良 提交于 2019-11-29 04:02:45
Spring缓存抽象 Spring从3.1开始定义了一系列抽象接口来统一不同的缓存技术;并支持使用JCache(JSR-107)注解简化我们进行缓存开发。Spring Cache 只负责维护抽象层,具体的实现由你的技术选型来决定。将缓存处理和缓存技术解除耦合。 依赖引入 Spring cache 抽象由spring-context相关组件实现。非Spring Boot 项目可通过引入该模块进行集成。 Spring Boot 项目可引入以下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> 同时可能需要引入你采用的缓存中间件客户端;比如 Ehcache、redis等。 两个重要抽象概念 Cache 缓存抽象规范接口,定义缓存一些了操作。实现有:RedisCache、EhCacheCache、ConcurrentMapCache等 CacheManager 缓存管理器,管理Cache的生命周期。 常用的一些注解 Spring cache 提供了一系列的注解,将我们从编程开发中解放出来。让我们更加关注于业务开发。 @EnableCaching 该注解是启用Spring cache 的开关