使用短信登录和注册的流程
现在各个网站普遍使用的登录认证方式是使用短信认证登录,并且在用户与服务器交互的过程中这部分功能需要被多次调用,所以在项目中不可避免地要包括这一部分,学习之后,在此记录其流程:
实现短信认证登录可以有两种方式:基于session实现和基于redis实现。
基于session实现的过程如下:
1. 发送短信验证码:
- 用户在手机号输入框中输入一个手机号,然后点击发送验证码
- 系统校验这个手机号是否是一个正确的手机号
- 如果这个手机号不合法,则需要用户重新输入
- 如果合法,则系统根据规则生成一个验证码,并且将这个验证码存储到session域中,同时以短信形式发送给用户提供的手机号
2. 短信验证码登录、注册
- 用户收到验证码之后,输入验证码并点击登录
- 系统校验手机号(再次校验防止被修改)和验证码
- 如果验证码和session域中的的不一致,认证失败,重新验证;
- 如果验证成功进行到下一步
- 用户根据手机号登录,有可能这个手机号是第一次使用,即系统中不存在对应的用户,则创建一个新的用户,初始化必要的信息,保存到数据库中
- 此时数据库中存在一个对应的用户,将这个用户信息保存到session域中以后使用。
3. 校验登录状态
- 当用户发送请求的时候,首先判断用户是否登录,即session中是否存在用户信息,如果存在,说明用户已经登录,否则拦截请求并跳转到登录页面。使用拦截器实现。
基于redis实现:
基于session实现存在问题是:当有多个服务器的时候,session共享困难。一种解决的办法是基于redis实现。
基于redis实现的过程与基于session的过程基本一致,不同的地方在于信息不是存储在session中,而是redis中。另外一个不同点在于,由于使用redis,所以数据是不同的用户都可以访问到的,而在session中,则只有当前用户可以访问到;所以数据在redis中的存储必须为每组数据赋值为一个独一无二的键值,并且在验证登录成功之后需要将这个键值返回给客户端。
使用短信登录和注册的流程相关推荐
- 手机短信验证码一键注册登录功能开发 1
1. 首先根据业务分析, 先要在前端填写我们的手机号, 发送短信验证码给我们的用户 对于我们后端来说, 发送验证码就是我们要开发的接口, 手机号就是我们传入的参数,然后就可以编写相应的代码了 @Api ...
- 不就是个短信登录API嘛,有这么复杂吗?
引子 上联:这个需求很简单 下联:怎么实现我不管 横批:今晚上线 Part 1:暴力破解 早上开完站会,小李领了张新卡,要对登录功能做升级改造,在原来只支持用户名密码登录模式的基础上,新增手机号和短信 ...
- 《Redis实战篇》一、短信登录
1.1.导入黑马点评项目 1.1.1 .导入SQL 1.1.2.有关当前模型 手机或者app端发起请求,请求我们的nginx服务器,nginx基于七层模型走的事HTTP协议,可以实现基于Lua直接绕开 ...
- 黑马点评项目-短信登录功能
一.导入黑马点评项目 1.代码下载 视频资源链接:P25 实战篇-02.短信登录-导入黑马点评项目 代码可以直接去黑马微信公众号上搜索,或者从下面的网盘链接中下载:链接: https://pan.ba ...
- Redis(五) - Redis企业实战之短信登录
文章目录 一.导入黑马点评项目 1. 导入SQL 2. 前后端分离 3. 导入后端项目 3.1 将后端项目导入到 Idea 中 3.2 注意:修改application.yaml文件中的mysql.r ...
- 不就是个短信登录API嘛,有这么复杂吗?(转载)
重要声明: 本篇文章转载自公众号ThoughtWorks洞见(ID:TW-Insights),个人觉得文章分析问题的思路还行,如有侵权,请联系删除,谢谢. 上联:这个需求很简单,下联:怎么实现我不管, ...
- Security之短信登录篇
1.功能实现 Security默认提供的是用户名密码登录模式,然后我们参考用户名密码登录自定义实现短信登录模式 这样就多了一种登录模式,在登录的时候可以自行选择登录模式 2.security07 子工 ...
- Spring Security系列(22)- Security实现手机短信登录功能
准备 需求 采用手机号+短信验证码登录方式是很常见的一种需求. 那我们如何在Spring Security实现这种功能呢? 表单登录流程 首先再回顾一下用户名密码表单登录流程. 登录请求进入过滤器 调 ...
- redis的实战项目01_模拟短信登录业务
redis的实战项目01_短信登录 一.导入黑马点评项目 1. 数据库: 2. 单体项目介绍: 二.基于session实现登录 1.发送短信验证码 1.理论流程 2.代码操作: 2.短信验证码登录.注 ...
最新文章
- HTML SVG 如何下载svg文件,png文件,jpge文件
- php猴子找大王算法,php 正常的猴子选大王算法
- centos云服务器出现No module named ‘_sqlite3′
- VMware workstation 创建共享盘
- linux 的文件软链接隐藏,Linux inode及硬链接软链接详解
- ASP.NET Core 进程外(out-of-process)托管(7)《从零开始学ASP.NET CORE MVC》
- 截取文件最后10行_软网推荐:向视频文件“开刀”
- P2P-JXTA学习(1)-入门
- 修复EXE文件无法打开
- 怎么选择boost升压电路的电感?只要三个公式
- 谷歌浏览器添加插件——json
- 如何在IDEA中使用 Jclasslib
- 大数据入门书籍推荐以及Hive学习资料
- 数据建模 - 概念模型,逻辑模型,物理模型 的区别以及建模方式
- 最短路径算法----Floyd-warshall(十字交叉算法证明)
- Cisco Aironet系列AP的瘦胖转换
- 智能硬件成在线教育救命稻草?
- 斗图?教你用 Python 制作表情包
- 有密码Win10创建新用户
- 什么是软链接、硬链接
热门文章
- 【2020年高被引学者】 朱松纯 北京大学
- 如何在服务器上添加虚拟IP?看完原来如此简单
- 并查集应用-判断亲戚关系
- 799 - 背包问题VIII - LintCode
- 输入三个整数a,b,c。并进行两两相加,最后比较相加和的最大值。
- 小暑 |入伏前,这样做,宝宝长高高更聪明!
- 小工具推荐:tokei(高效统计代码行数)
- Swagger报错:missed comma between flow collection entries
- Python程序员的就业方向及就业薪资,你都了解吗?
- NetFPGA-SUME下reference_nic测试