浅谈短信验证码的开发(附源码)

今天周六,敲了一天代码到现在实在没有继续敲的欲望了,索性就写一篇博客吧。但是说实话在写这篇博客的时候实在没有什么主题,只是恰好正在一个新项目中写到短信验证码的地方,所以就谈谈我对于短信验证码开发的一点认识。

短信验证码

短信验证码我们生活中经常遇到,不管注册什么平台,有手机号的地方总少不了短信验证码,所以一些有心的人也会收集一些平台的短信接口来做短信轰炸机。不过波波再次提醒大家学一点技术没有什么,千万不要用技术去作恶,测试一两次知道怎么回事就行了,作恶这事就有点损阴德了。

短信分类可能稍微比较多,但是短信验证码根据应用场景一般分为三种,最多是四种。分别是注册验证码,登录验证码,找回密码验证码和重置密码验证码。一般最后两种都合在一起。这样我们在需要给用户发送短信的时候就可以根据不同的应用场景来写对应的逻辑了。

短信验证码的流程:

短信验证码的流程

在上述流程中,当用户需要获取短信时,首先需要调用我们开放的短信API,短信API根据不同的业务场景进行相应的业务逻辑操作,最后将用户的短信请求传递给系统服务层中的短信服务,最终由系统内的短信发送服务调用第三方短信发送接口完成短信的发送操作。

这样做看起来有点复杂,也有朋友是直接封装成一个短信发送方法的,但是加入API中间层之后系统平台的短信发送灵活度就大大的提升了。

首先由于短信API层的介入,我们就可以将短信服务封装在系统的服务层,增强模块的可移植性,也就是如果有其他项目需要短信发送服务的时候,直接将文件放到新项目中就能运行,可以减少开发的时间。

其次短息API作为短信发送请求的中间层可以通过业务逻辑得判断在一定程度上防止短信接口被恶意的利用,比如我们可以把手机号短信验证码通过cache缓存起来,同时假如有人恶意利用短信验证码发起对其他人的短信轰炸,我们也可以通过监测来暂时或永久的屏蔽对特定手机号的短信发送。很大程度上降低企业的运营成本。

总而言之短信发送功能的设计主要围绕的就是两个核心:一个是用户体验,一个是安全。

所谓用户体验就是保障系统内真实用户在需要短信验证码的时候速度要快,体验要好。同时也要尽可能的保障短信接口不被怀有恶意目的的人利用。被人恶意利用时不至于短信接口不可控。

最后分享一个聚合短信的服务层源码,因为业务层需要自己去写。用的时候仅需要一行代码即可。

  1. //use service\SmsService;  引入短信服务
  2. SmsService::send($mobile,'reg',$code);

首先在短信API的业务层引入短信服务,然后把需要发送短信验证码的手机号,发送场景,验证码依次作为参数传递给短信发送服务即可完成短信的发送操作了。

源码下载:

此处为隐藏的内容!
发表评论并刷新,才能查看

今天的分享就写到这里吧,有不同意见的也欢迎留言交流。

波波
你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!

目前评论:1   其中:访客  1   博主  0

  1. avatar 95442 1

    不错哦 支持 哈哈