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

实现短信认证登录可以有两种方式:基于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. HTML SVG 如何下载svg文件,png文件,jpge文件
  2. php猴子找大王算法,php 正常的猴子选大王算法
  3. centos云服务器出现No module named ‘_sqlite3′
  4. VMware workstation 创建共享盘
  5. linux 的文件软链接隐藏,Linux inode及硬链接软链接详解
  6. ASP.NET Core 进程外(out-of-process)托管(7)《从零开始学ASP.NET CORE MVC》
  7. 截取文件最后10行_软网推荐:向视频文件“开刀”
  8. P2P-JXTA学习(1)-入门
  9. 修复EXE文件无法打开
  10. 怎么选择boost升压电路的电感?只要三个公式
  11. 谷歌浏览器添加插件——json
  12. 如何在IDEA中使用 Jclasslib
  13. 大数据入门书籍推荐以及Hive学习资料
  14. 数据建模 - 概念模型,逻辑模型,物理模型 的区别以及建模方式
  15. 最短路径算法----Floyd-warshall(十字交叉算法证明)
  16. Cisco Aironet系列AP的瘦胖转换
  17. 智能硬件成在线教育救命稻草?
  18. 斗图?教你用 Python 制作表情包
  19. 有密码Win10创建新用户
  20. 什么是软链接、硬链接

热门文章

  1. 【2020年高被引学者】 朱松纯 北京大学
  2. 如何在服务器上添加虚拟IP?看完原来如此简单
  3. 并查集应用-判断亲戚关系
  4. 799 - 背包问题VIII - LintCode
  5. 输入三个整数a,b,c。并进行两两相加,最后比较相加和的最大值。
  6. 小暑 |入伏前,这样做,宝宝长高高更聪明!
  7. 小工具推荐:tokei(高效统计代码行数)
  8. Swagger报错:missed comma between flow collection entries
  9. Python程序员的就业方向及就业薪资,你都了解吗?
  10. NetFPGA-SUME下reference_nic测试