现在各个网站普遍使用的登录认证方式是使用短信认证登录,并且在用户与服务器交互的过程中这部分功能需要被多次调用,所以在项目中不可避免地要包括这一部分,学习之后,在此记录其流程:

实现短信认证登录可以有两种方式:基于session实现和基于redis实现。

基于session实现的过程如下:

如上图是黑马程序员课程中的一张图,描述了短信登录的过程,这一过程分为三部分分别实现:

1. 发送短信验证码:

  • 用户在手机号输入框中输入一个手机号,然后点击发送验证码
  • 系统校验这个手机号是否是一个正确的手机号
    • 如果这个手机号不合法,则需要用户重新输入
    • 如果合法,则系统根据规则生成一个验证码,并且将这个验证码存储到session域中,同时以短信形式发送给用户提供的手机号

2. 短信验证码登录、注册

  • 用户收到验证码之后,输入验证码并点击登录
  • 系统校验手机号(再次校验防止被修改)和验证码
  • 如果验证码和session域中的的不一致,认证失败,重新验证;
  • 如果验证成功进行到下一步
  • 用户根据手机号登录,有可能这个手机号是第一次使用,即系统中不存在对应的用户,则创建一个新的用户,初始化必要的信息,保存到数据库中
  • 此时数据库中存在一个对应的用户,将这个用户信息保存到session域中以后使用。

3. 校验登录状态

  • 当用户发送请求的时候,首先判断用户是否登录,即session中是否存在用户信息,如果存在,说明用户已经登录,否则拦截请求并跳转到登录页面。使用拦截器实现。

基于redis实现:

基于session实现存在问题是:当有多个服务器的时候,session共享困难。一种解决的办法是基于redis实现。

基于redis实现的过程与基于session的过程基本一致,不同的地方在于信息不是存储在session中,而是redis中。另外一个不同点在于,由于使用redis,所以数据是不同的用户都可以访问到的,而在session中,则只有当前用户可以访问到;所以数据在redis中的存储必须为每组数据赋值为一个独一无二的键值,并且在验证登录成功之后需要将这个键值返回给客户端。

使用短信登录和注册的流程相关推荐

  1. 手机短信验证码一键注册登录功能开发 1

    1. 首先根据业务分析, 先要在前端填写我们的手机号, 发送短信验证码给我们的用户 对于我们后端来说, 发送验证码就是我们要开发的接口, 手机号就是我们传入的参数,然后就可以编写相应的代码了 @Api ...

  2. 不就是个短信登录API嘛,有这么复杂吗?

    引子 上联:这个需求很简单 下联:怎么实现我不管 横批:今晚上线 Part 1:暴力破解 早上开完站会,小李领了张新卡,要对登录功能做升级改造,在原来只支持用户名密码登录模式的基础上,新增手机号和短信 ...

  3. 《Redis实战篇》一、短信登录

    1.1.导入黑马点评项目 1.1.1 .导入SQL 1.1.2.有关当前模型 手机或者app端发起请求,请求我们的nginx服务器,nginx基于七层模型走的事HTTP协议,可以实现基于Lua直接绕开 ...

  4. 黑马点评项目-短信登录功能

    一.导入黑马点评项目 1.代码下载 视频资源链接:P25 实战篇-02.短信登录-导入黑马点评项目 代码可以直接去黑马微信公众号上搜索,或者从下面的网盘链接中下载:链接: https://pan.ba ...

  5. Redis(五) - Redis企业实战之短信登录

    文章目录 一.导入黑马点评项目 1. 导入SQL 2. 前后端分离 3. 导入后端项目 3.1 将后端项目导入到 Idea 中 3.2 注意:修改application.yaml文件中的mysql.r ...

  6. 不就是个短信登录API嘛,有这么复杂吗?(转载)

    重要声明: 本篇文章转载自公众号ThoughtWorks洞见(ID:TW-Insights),个人觉得文章分析问题的思路还行,如有侵权,请联系删除,谢谢. 上联:这个需求很简单,下联:怎么实现我不管, ...

  7. Security之短信登录篇

    1.功能实现 Security默认提供的是用户名密码登录模式,然后我们参考用户名密码登录自定义实现短信登录模式 这样就多了一种登录模式,在登录的时候可以自行选择登录模式 2.security07 子工 ...

  8. Spring Security系列(22)- Security实现手机短信登录功能

    准备 需求 采用手机号+短信验证码登录方式是很常见的一种需求. 那我们如何在Spring Security实现这种功能呢? 表单登录流程 首先再回顾一下用户名密码表单登录流程. 登录请求进入过滤器 调 ...

  9. redis的实战项目01_模拟短信登录业务

    redis的实战项目01_短信登录 一.导入黑马点评项目 1. 数据库: 2. 单体项目介绍: 二.基于session实现登录 1.发送短信验证码 1.理论流程 2.代码操作: 2.短信验证码登录.注 ...

最新文章

  1. 【Unix 网络编程】TCP状态转换图详解
  2. 循环类里面的每一个属性
  3. 新垣结衣自拍照_如何阻止自拍照出现在iPhone的自拍照专辑中
  4. 数学建模1 赛前准备 赛题选择 查找文献
  5. PowerShell yarn : 无法加载文件 C:\Users\Admin\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。
  6. org.springframework.mail.MailAuthenticationException: Authentication failed 解决方案
  7. IEC61850报告服务(报文解析)
  8. HTML5学习笔记简明版(6):新增属性(1)
  9. C# ado.net数据库连接池,使用长连接访问数据库
  10. ElementUI:tree组件背景色、鼠标hover悬浮背景色、选中背景色修改
  11. git学习笔记-(7-高层命令(1))
  12. 两台redhat7虚拟机配置ssh免密访问
  13. Cmder安装并解决cmder here报错问题
  14. 兵卒情缘酒新品上市发布会
  15. 表格固定表头,tbody加滚动条
  16. [审核]审核被拒(陌生社交应用)
  17. Eclipse 汉化教程完美版
  18. 随机效应估算与固定效应估算_固定效应模型的估计原理说明.pdf
  19. IDEA自定义注释模板(javadoc)
  20. 【读书笔记】【思考总结】《AKF15条架构原则》

热门文章

  1. Bellman Equation 贝尔曼方程
  2. 汉信码(Hanxin Code)与QR码(QR Code)的终极对决
  3. 语雀批量导出MarkDown文件
  4. PowerPoint储存此文件时发生错误 出现错误的问题解决方法
  5. Electron-Builder打包时报错could not find: “\XXX\0-messages.nsh“
  6. 大小不同图片归一化到给定大小
  7. php实现发表情分页_php实现分页效果
  8. Python 爬取优美图库图片
  9. has leaked window com.android.internal.policy.impl.PhoneWindow解决(Dialog.cancel、dismiss、hide区别)
  10. windows调整jadx的使用内存大小