手机验证码登录

手机验证码登录

符号说明:

[]:表示可选或某些条件下流程。

需求说明:

用户可在登录页面使用手机验证码登录,若该手机号未绑定则输入验证码后还需输入用户账号密码进行绑定,绑定后则成功使用验证码登录。

用户可在控制台进行新增、修改、删除绑定手机号的操作。每个用户最多绑定两个手机号。

1.流程分析

a.输入手机号点击发送验证码 —> b.输入验证码点击确认按钮 —> [c.未绑定的手机号需要绑定到用户]

每一步都需要向后台发送一个请求,三个请求组成一个流程。通过Redis保存请求间的联系。关于SpringMVC集成Redis可参考文章:Redis单点与集群连接

ps:为什么要使用Redis? Redis存取方便,性能更好,并可以方便的控制对象的存活时间。

直接使用短信验证码登录,新绑定手机号,与修改手机号主要流程相同但部分细节方面需要进行不同的处理,使用策略模式实现不同细节的处理。

2.代码逻辑

2.1 Controller层

2.1.1 登录页面发送验证码接口。对应流程a。参数为手机号,[是否为修改绑定的标识],[旧手机号码(若为修改绑定则必传)]。发送验证码到手机,接口返回一个随机数和一个标识是否首次绑定

前端根据此标识调用不同接口,若已绑定过则调用2.1.2接口获取登录成功后的字段(如token信息);若未绑定则调用2.1.3接口进行绑定操纵。

后台可根据是否为修改绑定,是否为首次绑定调用不同的策略。具体策略下文细讲。

ps:发送验证码接口可生成一个随机数返回给前端,随机数作为key存放在Redis中,value中存放如手机号等校验验证码时需要的信息。

2.1.2 验证验证码接口。参数为验证码,接口2.1.1生成的随机数,其他登录所需校验参数。接口验证验证码是否正确。

若验证码正确则返回登录成功后的字段(如token)。

2.1.3 验证验证码接口。参数为验证码,接口2.1.1生成的随机数。返回一个随机数。

接口验证验证码是否正确,若验证码正确则生成随机数作为key存放在Redis中,value为手机号等信息。

2.1.4 绑定用户接口。参数为 用户名,密码,接口2.1.3生成的随机数,[是否使用改手机号登录标识,不传默认为false],[其他登录所需校验参数]。

校验通过后,将手机号存入数据库与用户关联。若登录标识为true,则返回登录成功后的字段(如token)。

2.2 Service层

Service层类图如下

service层策略类图

抽象类提供了protected访问权限的公共方法(generateVC;verifyVC;userLogin());子类可按需调用。子类实现抽象方法实现每种情景下的访问细节。Controller层根据不同情况调用不同策略。

将我实现的手机验证码登录流程做个总结,希望有大佬可以指出其中的不足。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值