返回顶部
首页 > 资讯 > 后端开发 > GO >golang怎么使用Gin框架实现短信验证码功能
  • 873
分享到

golang怎么使用Gin框架实现短信验证码功能

2023-06-20 18:06:53 873人浏览 薄情痞子
摘要

golang怎么使用Gin框架实现短信验证码功能,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。使用JSON配置文件// 配置文件 "

golang怎么使用Gin框架实现短信验证码功能,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

使用JSON配置文件

// 配置文件 "sms": {     "sign_name": "虚拟云餐厅",     "template_code": "SMS_205471746",     "app_key": "",     "app_secret": "",     "region_id": "cn-hangzhou" }

配置文件解析

func ParseConfig(path string) (*Config, error) {file, err := os.Open(path)if err != nil {panic(err)}defer file.Close()newReader := bufio.NewReader(file)decoder := json.NewDecoder(newReader)err = decoder.Decode(&config)if err != nil {panic(err)}return config, nil}

编写路由controller层

//发送手机验证码 engine.GET("/api/sendcode",mc.SendSmsCode ) //手机号和短信登录 engine.POST("/api/login_sms", mc.smsLogin) //删除验证码

发送短信

func (mc *MemBerController) SendSmsCode(context *gin.Context) {phone, err := context.GetQuery("phone")if !err {context.JSON(200, map[string]interface{}{"code":    0,"message": "手机号不存在",})return}ms:=Service.MemberService{}isSend := ms.Sendcode(phone)//调用service层方法发送验证码if  isSend {context.JSON(200, map[string]interface{}{"code":1,"msg":"发送成功",})}else {context.JSON(200, map[string]interface{}{"code": 0,"msg":  "发送失败",})}}

service层

func (msi * MemberService)Sendcode(phone string) bool  {//随机产生一个验证码code := fmt.Sprintf("%06v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(1000000))smsConfig := config.GetConfig().Sms//调用阿里云短信接口发送短信    //client, err := dysmsapi.NewClientWithAccessKey("cn-hangzhou", "<accessKeyId>", "<accessSecret>")    client, err := dysmsapi.NewClientWithAccessKey(smsConfig.RegionId, smsConfig.AppKey, smsConfig.AppSecret)if err != nil {panic(err)}request := dysmsapi.CreateSendSmsRequest()//request属性设置request.Scheme = "https"request.SignName = smsConfig.SignNamerequest.TemplateCode = smsConfig.TemplateCode    request.PhoneNumbers = phone    //使用json字符串发送验证码par, err := json.Marshal(map[string]interface{}{"code": code,})//设置验证码request.TemplateParam = string(par)response, err := client.SendSms(request)fmt.Println( response)if err != nil {err.Error()return false}//检查返回结果,并判断发生状态if response.Code != "OK" {        smsCode := model.SmsCode{Phone: phone, Code: code, BizId: response.BizId, CreateTime: time.Now().Unix()}        //插入数据库操作memberDao := dao.MemberDao{util.DdEngie}insertCode := memberDao.InsertCode(smsCode)return insertCode>0return true}return true}

Dao层

数据库表结构

//验证码表结构type SmsCode struct {    Id         int64 `xORM:"pk autoincr"  json:"id"`    Phone      string `xorm:"varchar(11)" json:"phone"`    BizId      string `xorm:"varchar(30)" json:"biz_id"`    Code       string `xorm:"varchar(4)"  json:"code"`    CreateTime int64 `xorm:"bigint"       json:"create_time"`}//用户表结构//用户类    type Member struct {        Id           int64 `xorm:"pk autoincr "json:"id"`        UserName     string `xorm:"varchar(20) "json:"user_name"`        Mobile       string  `xorm:"varchar(11)" json:"mobile"`        PassWord     string  `xorm:"varchar(255)" json:"password"`        ReGISterTime int64   `xorm:"bigint" json:"register_time"`        Avatar       string  `xorm:"varchar(255)" json:"avatar"`        Balance      float64 `xorm:"double" json:"balance"`        IsActive     int8    `xorm:"tinyint" json:"is_active"`        City         string  `xorm:"varchar(10)" json:"city"`    }
type MemberDao struct {* util.Orm}//插入数据func (md *MemberDao) InsertCode(sms model.SmsCode) int64 {one, err := md.InsertOne(&sms)if err != nil {panic(err)}return one}//插入用户func (md *MemberDao) InsertMember(member model.Member) int64 {result, err := md.InsertOne(&member)if err != nil {util.Error(err.Error())}return result}

验证码登录

路由

engine.POST("/api/login_sms", mc.smsLogin)//短信登录func (mc *MemBerController) smsLogin(context *gin.Context) {    var smsParam param.SmsLoginParam    //解析请求参数    // type SmsLoginParam struct {// Phone string `json:"phone"`// Code string `json:"code"`    // }err := util.Decode(context.Request.Body, &smsParam)if err != nil {util.Failed(context, "参数解析错误")return}//完成手机加短信的登录方法us := Service.MemberService{}member := us.SmsLogin(smsParam)if member != nil {util.Success(context, member)return}util.Failed(context, "登录失败")}

service层

func (msi *MemberService) SmsLogin(param param.SmsLoginParam) *model.Member {    dao := dao.MemberDao{}    //查询封装的验证码表结构sms := dao.ValidateSmsCode(param.Phone, param.Code)    //判断时间if sms == nil || time.Now().Unix()-sms.CreateTime > 300 {return nil}    //查询用户member := dao.QueryByPhone(param.Phone)if member != nil {return nil}user := model.Member{}user.UserName = param.Phoneuser.Mobile = param.Phoneuser.RegisterTime = time.Now().Unix()    user.Id = dao.InsertMember(user)    //返回用户return &user}

dao层

//查询语句func (md *MemberDao) ValidateSmsCode(phone string, code string) *model.SmsCode {var sms model.SmsCodeif err := md.Where(" phone = ? and code = ? ", phone, code).Find(&sms); err != nil {util.Error(err.Error())}return &sms}func (md *MemberDao) QueryByPhone(phone string) interface{} {var sms model.Membererr := md.Where("phone=?", phone).Find(&sms)if err != nil {util.Error(err.Error())}return sms}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网GO频道,感谢您对编程网的支持。

您可能感兴趣的文档:

--结束END--

本文标题: golang怎么使用Gin框架实现短信验证码功能

本文链接: https://lsjlt.com/news/299474.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • golang怎么使用Gin框架实现短信验证码功能
    golang怎么使用Gin框架实现短信验证码功能,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。使用json配置文件// 配置文件 "...
    99+
    2023-06-20
  • go使用Gin框架利用阿里云实现短信验证码功能
    第一步,调用阿里云Api发送短信并存入数据库或者是redis当中 阿里云短信平台网址 [https://api.aliyun.com/new#/?product=Dysmsa...
    99+
    2024-04-02
  • Nodejs怎么实现短信验证码功能
    这篇文章将为大家详细讲解有关Nodejs怎么实现短信验证码功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用Nodejs的开发者愈来越多,基于Nodejs的后台开发也...
    99+
    2024-04-02
  • Nodejs实现短信验证码功能
    使用Nodejs的开发者愈来越多,基于Nodejs的后台开发也多了起来,像短信验证码、短信群发、国际短信这些需求,完全可以采用第三方接口来实现,云片就提供了这样的接口。 Nodejs // 修改为您的a...
    99+
    2022-06-04
    验证码 短信 功能
  • 怎么使用PHP实现一个短信验证码功能
    本篇内容介绍了“怎么使用PHP实现一个短信验证码功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!第一步:生成短信验证码要生成短信验证码,我...
    99+
    2023-07-05
  • Android实现短信验证功能的代码
    在我们现在开发APP过程中,当用户注册时,短信验证是必不可少的操作,这里我们就是用一个免费的第三方短信验证SDK-MOP 首先看下效果图 获取AppKey和AppSecr...
    99+
    2022-06-06
    Android
  • java如何实现短信验证码功能
    要在Java中实现短信验证码功能,你可以按照以下步骤进行操作:1. 选择一个可靠的短信服务提供商:首先,你需要选择一个可靠的短信服务...
    99+
    2023-10-21
    java
  • 怎么用java+maven实现发送短信验证码功能
    这篇文章主要介绍“怎么用java+maven实现发送短信验证码功能”,在日常操作中,相信很多人在怎么用java+maven实现发送短信验证码功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用java+m...
    99+
    2023-06-02
  • java怎么实现注册的短信验证码功能
    本篇内容介绍了“java怎么实现注册的短信验证码功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!短信验证码实现流程构造手机验证码,生成一个...
    99+
    2023-06-02
  • 短信验证码校验功能如何利用SpringBoot实现
    本篇文章为大家展示了短信验证码校验功能如何利用SpringBoot实现,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。思路用户输入手机号后,点击按钮获取验证码。并设置冷却时间,防止用户频繁点击。后台生...
    99+
    2023-05-31
    springboot bo
  • Android实现短信验证码输入框
    本文实例为大家分享了Android实现短信验证码输入框的具体代码,供大家参考,具体内容如下 其实用官方自定的那个inputEditText默认带下划线的,然后自己再实行焦点和输入框...
    99+
    2024-04-02
  • 使用python爬虫怎么实现一个发送短信验证码功能
    本篇文章为大家展示了使用python爬虫怎么实现一个发送短信验证码功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。内联代码片。import timedef get_time()...
    99+
    2023-06-06
  • vue怎么实现短信验证码
    这篇文章主要讲解了“vue怎么实现短信验证码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue怎么实现短信验证码”吧!一、需求1,需求  我们在做网站开发...
    99+
    2024-04-02
  • Android实现短信验证码自动填写功能
    本实例为大家分享了Android实现短信验证码自动填写功能,供大家参考,具体内容如下 实现思路很简单: 1、在需要输入验证码的Activity代码注册监听短信的广播 2...
    99+
    2022-06-06
    自动 验证码 短信验证码 Android
  • java如何实现短信验证码登录功能
    小编给大家分享一下java如何实现短信验证码登录功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!业务案例如下所示,是一个大家熟知的采用短信登录的入口输入手机号之...
    99+
    2023-06-25
  • Java如何实现发送短信验证码功能
    小编给大家分享一下Java如何实现发送短信验证码功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一个发送短信验证码的功能,使用的是信易通的短信平台接口,然后在J...
    99+
    2023-05-30
    java
  • PHP实现短信验证码功能的原理与实现
    随着科技的不断进步,短信验证码的功能越来越受到各个领域的欢迎。在互联网领域中,短信验证码已经成为了一个不可或缺的安全验证方式。本文主要介绍PHP实现短信验证码功能的原理和实现方式。一,短信验证码的原理短信验证码是利用手机短信发送的一种随机验...
    99+
    2023-05-22
    PHP 实现 短信验证码
  • golang中gin框架接入jwt使用token验证身份
    目录jwt 流程: 1.token 工具类 2. 使用该中间件 3. controller部分代码 jwt jwt的原理和session有点相像,其目的是为了解决rest api中...
    99+
    2024-04-02
  • java短信验证码登录功能设计与实现
    目录前言业务案例业务关键点剖析短信验证码功能实现思路有效期问题操作步骤前言 现在不管是各类的网站,还是大小社交app,登录方式是越来越多了,其中基于短信验证码的登录可以说是各类app...
    99+
    2024-04-02
  • 手动实现js短信验证码输入框
    前言   本文记录一下自己手动实现的一个前端常见的短信验证码输入组件,从需求到实现逐步优化的过程。 正文   1.需求分析   首先看一下效果图。     首先页面加载的时...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作