手机验证码登录

article/2025/10/13 2:04:15

手机验证码登录

符号说明:

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

需求说明:

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

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

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层根据不同情况调用不同策略。

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


http://chatgpt.dhexx.cn/article/fgGm2myg.shtml

相关文章

登录模块(手机验证码)

本人为实习生,第一次写博客,写的不好的大家多多谅解 应公司近期需求,需要单独开发一个后台管理系统。 自己按实际业务写了一个登录接口已经实现,时序图如下 源码牵扯业务量太大,这里只放出部分关键实现源码,整合思路可以配合时序图去理解。 Controller层 package com…

java十大排序算法

十大排序算法在面试java过程中想必或多或少都会有。尤其是在笔试题上,有些大厂就让你现场写个十大排序。是不是一下子整懵了。。。 目录 一、首先先介绍下十大排序算法: 1、算法分类 2 、算法复杂度 3、 相关概念 二、详细分析各个算法 1、冒泡排…

Go语言十大排序算法

文章目录 Go语言十大排序算法0x01 冒泡排序0x02 选择排序0x03 插入排序0x04 希尔排序0x05 归并排序0x06 快速排序0x07 堆排序0x08 计数排序0x09 桶排序0x10 基数排序总结按时间复杂度分类:按稳定性分类按排序方式 Go语言十大排序算法 稳定:如果a原本在b前…

排序算法——十大排序算法总结与对比

一、十大排序算法复杂度对比 二、关于排序算法的总结 1、基数排序仅仅适用于整型数的排序,一般不与另外的排序方法一起比较。 2、关于算法的稳定性:不稳定的算法有 “快希选堆”——快速排序,希尔排序,选择排序和堆排序。 3、关…

十大排序算法(面试必备)

目录 简单排序 1、冒泡排序 2、选择排序 3、插入排序 高级排序 4、希尔排序(缩小增量排序) 5、归并排序 6、快速排序 7、计数排序 8、堆排序 9、桶排序 10、基数排序 总结: 1、十大排序算法对比 2、基数排序、计数排序、桶排序…

十大排序算法学习

Sort 排序类算法是非常常见的算法,包括了比较类排序与非比较类排序 排序能够解决很多问题,有的编程语言也提供了一些排序算法函数(比如C的sort)但是掌握基本的排序算法原理以及写法仍然是很重要的,并且排序也是面试常…

十大排序算法(Java)

目录 1.冒泡排序 2.快速排序 3.插入排序 4.希尔排序 5.选择排序 6.堆排序 7.归并排序 8.计数排序:速度快,一般用于整数排序 9.桶排序 10.基数排序 1.冒泡排序 冒泡排序思路:(两层for循环) 比较相邻的元素。…

十大排序算法(C++)

十大排序算法Sorting algorithm(C) 百度百科: 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地…

十大排序算法——C语言实现

1.冒泡排序 ​ 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数…

Python实现十大排序算法

1.排序算法概述 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。 线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比…

Java实现十大排序算法

Java实现十大排序算法 十大排序算法分别为:选择排序、冒泡排序、插入排序、快速排序、归并排序、堆排序、希尔排序、桶排序、计数排序、基数排序。 本篇只是为了方便我在代码中直接复制调用,因此原理和思想解释的并不清楚,想看原理的朋友可…

十大排序算法(C++版)

十大排序算法 前言一、插入排序二、希尔排序三、冒泡排序四、快速排序五、选择排序六、归并排序七、堆排序八、计数排序九、桶排序十、基数排序总结 前言 什么是排序? 排序:将一组杂乱无章的数据按一定规律顺次排列起来。即,将无序序列排成一…

十大排序算法详解

十大排序算法详解 参考程序员必知必会的十大排序算法详解 引言 对于排序的分类,可以将排序算法分为两大类:基于比较和非比较的算法。 基于比较的排序算法可以细分为: 基于交换类:冒泡排序、快速排序基于插入类:直接插入…

JS 实现十大排序算法

文章目录 前言零、十大排序一、冒泡排序(bubbleSort)二、选择排序(selectionSort)三、插入排序(insertSort)四、希尔排序(shellSort)五、归并排序(mergeSort)…

十大经典排序算法Java版(动图演示)

文章目录 0 排序算法说明0.1 内部排序和外部排序0.2 比较类排序和非比较类排序0.3 关于时间复杂度0.4 关于稳定性0.5 名词解释: 1 交换排序——冒泡排序(Bubble Sort)1.1 什么时候最快1.2 什么时候最慢1.3 算法步骤1.4 动图演示1.5 Java实现 …

html之如何让button按钮居中

解决措施&#xff1a;使用center或者div的align属性 示例代码&#xff1a; <html> <body><center><button onClick"clickme()">hit me</button></center><script>function clickme(){alert("123");} </scr…

HTML中让表单和提交按钮居中的方法

表单&#xff1a; form{ width: 500px; /*设置宽度&#xff0c;方便使其居中*/ margin: 40px auto auto auto; /*上右下左*/ font-size: 25px; 提交按钮&#xff1a;div的align属性 <div align"center"><button onClick"clickme()">提交…

android中的Button按钮居中(水平垂直中)

今天发现一个很怪异的事 Android Studio中居然一个简单的按钮水品垂直居中都写不出来 下图为理想效果&#xff1a; 可是当我写原始出代码的时候&#xff08;如下&#xff09;&#xff1a; <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android&quo…

Vue组件居中:文字居中,按钮居中,图片居中等,如何实现在容器中居中

Vue实现组件在容器中居中显示的办法 本文用实验的方法理解各种方法实现居中的效果。 实现水平居中的样式主要有&#xff1a;text-align: center&#xff0c; margin: auto。 当然还有别的方式也可以实现&#xff0c;也会写在下面。 用三个同样的div来控制变量法看效果&#xf…

Contact form 7 提交按钮居中,怎么设置submit button居中显示

Contact form 7 提交按钮居中&#xff0c;怎么设置submit button居中显示 前言 最近公司在做网站&#xff0c;毫无疑问用的是wordpress程序&#xff0c;然后就用到了contact form 7这个插件。单是这个插件的按钮始终无法居中显示&#xff0c;查了很多教程有的让改主题&#x…