美文网首页
beego项目实战——短信验证码

beego项目实战——短信验证码

作者: 血之君殇 | 来源:发表于2020-03-30 21:10 被阅读0次

上一篇开发完成了图形验证码,这一篇来开发短信验证码功能
短信验证码主要要实现两个功能
一、接收图形验证码的id,用户填写的图形验证码,用户的手机号,然后生成一个六位数的随机数写入redis,然后调用短信发送接口发送短信
二、接收手机号和短信验证码返回是否验证通过

model

sms.go

type Sms struct {
    Captcha Captcha
    Mobile  string
}

发送短信验证码需要校验之前的图形验证码,所以model里将之前的图形验证码包含进来

redis.go

var Redis cache.Cache

func init() {
    var err error
    Redis, err = cache.NewCache("redis", `{"key":"crm","conn":"127.0.0.1:6379"}`)
    if err != nil {
        fmt.Println(err.Error())
    }
}

使用init()方法直接构造一个单例模式,唯一的问题就是redis无法连接时无法将错误抛出去,等以后理解更深了看看有没有什么办法
连接redis时,若不设置key的花,beego会自动设置一个默认的key,非常蛋疼

controller

// @Title Post
// @Description 发送验证码
// @Param body body models.Sms true "手机号和验证码"
// @Success 200 {string} success
// @Failure 400 {string} 图形验证码错误
// @router / [post]
func (c *SmsController) Post() {
    var sms models.Sms
    json.Unmarshal(c.Ctx.Input.RequestBody, &sms)
    if !models.VerifyCaptcha(sms.Captcha.ID, sms.Captcha.B64s) {
        c.Data["json"] = "图形验证码错误"
        c.Abort("400")
    }

    rnd := rand.New(rand.NewSource(time.Now().UnixNano()))
    vcode := fmt.Sprintf("%06v", rnd.Int31n(1000000))

    vcode = "111111" // 测试代码
    models.Redis.Put(sms.Mobile, vcode, 10*time.Minute)

    // TODO 短信发送

    c.Data["json"] = "success"
    c.ServeJSON()
}

调用之前写的captcha的方法校验图形验证码

go语言的随机数有点坑,只能从0开始

使用fmt.Sprintf给不足6位的补足六位
调用写的单例将验证码写入redis中
短信运营商暂时还没有确定,此处代码等以后再写

router

beego.NSNamespace("/sms",
    beego.NSInclude(
        &controllers.SmsController{},
    ),
),

验证短信验证码的功能会在下一篇登录和注册里开发

相关文章

  • beego项目实战——短信验证码

    上一篇开发完成了图形验证码,这一篇来开发短信验证码功能短信验证码主要要实现两个功能一、接收图形验证码的id,用户填...

  • beego项目实战——图形验证码

    因为前端页面有些修改,所以就先开始做后端的接口,先做图形验证码功能图形验证码基于一个已有的库base64Captc...

  • Android 项目开发实战:短信验证码

    聚合数据集成短信验证码官网:https://www.juhe.cn/docs/api/id/54我根据文档集成了一...

  • 生产力工具之云片短信平台-模板管理

    四步搞定短信验证码如何搞定短信验证码签名和模板如何使用云片API发送短信验证码Java实现短信验证码和国际短信群发...

  • php接入语音验证码

    语音验证码在实际的项目中运用的也是非常广泛的,一般来说都会短信验证码叠加语音验证码使用,这样可以很有效的减少短信验...

  • 短信API实现自动化短信发送

    短信验证码接口示例,如何接入短信API接口实现短信自动发送功能; 网站如何实现自动发送短信验证码的功能,短信验证码...

  • 接入短信API,免费试用

    短信验证码接口示例,如何接入短信API接口实现短信自动发送功能; 网站如何实现自动发送短信验证码的功能,短信验证码...

  • beego项目实战——总体架构

    之前有一个销售推荐系统,主要是用来做下个季度的销售推荐,这个产品目前只是一个脚本,需要人工手动的清洗数据,然后运行...

  • beego项目实战——文件上传

    上一篇完成了用户的登录注册和登录态校验,这次开始做数据上传的部分,先做文件上传文件上传主要包括文件的上传存储,数据...

  • IOS验证码分析&实现

    前言 公司项目中在获取短信验证码的时候需要手动的输入图文验证码,防止多次获取验证码以及恶意刷验证码;通过分析和实践...

网友评论

      本文标题:beego项目实战——短信验证码

      本文链接:https://www.haomeiwen.com/subject/nsdvuhtx.html