wordpress构建自己的网站,网站建设类有哪些职位,wordpress解压到空间,山东网站策划怎么做文章目录 项目介绍1.1 项目准备1.2 基于Session实现登录流程1.2.1 发送短信验证码1.2.2 短信验证码登录、注册1.2.3 校验登录状态 1.3 实现发送短信验证码功能1.3.1 页面流程1.3.2 代码实现 1.41.51.6 #x1f64a; 前言#xff1a;本文章为瑞_系列专栏之《Redis》的实战篇的… 文章目录 项目介绍1.1 项目准备1.2 基于Session实现登录流程1.2.1 发送短信验证码1.2.2 短信验证码登录、注册1.2.3 校验登录状态 1.3 实现发送短信验证码功能1.3.1 页面流程1.3.2 代码实现 1.41.51.6 前言本文章为瑞_系列专栏之《Redis》的实战篇的短信登录章节的第二小节。由于博主是从B站黑马程序员的《Redis》学习其相关知识所以本系列专栏主要是针对该课程进行笔记总结和拓展文中的部分原理及图解等也是来源于黑马提供的资料特此注明。本文仅供大家交流、学习及研究使用禁止用于商业用途违者必究 主机操作系统Windows10VMware版本 VMware Workstation 16.2.4Linux版本CentOS 7 64位远程连接工具MobaXterm_Personal_23.2Redis版本redis-6.2.6.tar.gzRedis客户端resp-2022.2.0.0MySQL版本8.0.295.7均可Navicat Premium15.0.28JDK1.8 相关链接《瑞_VMware虚拟机安装Linux纯净版(含卸载图文超详细)》 相关链接《瑞_Redis_初识Redis含安装教程》 相关链接《瑞_Redis_Redis客户端》 相关链接《瑞_Redis_Redis命令》 相关链接《瑞_Redis_Redis的Java客户端》 相关链接《瑞_Redis_短信登录一》 项目介绍 本文基于B站黑马程序员的《黑马点评》项目需要相关资源可以到B站获取。 相关资源的某度网盘链接https://pan.baidu.com/s/1N-yr86yTRi3LbQdAL7prEQ?pwdq0ry 本项目具有以下功能点本文为《短信登录》篇的第二小节 短信登录 这一块我们会使用redis共享session来实现 商户查询缓存 通过本章节我们会理解缓存击穿缓存穿透缓存雪崩等问题让小伙伴的对于这些概念的理解不仅仅是停留在概念上更是能在代码中看到对应的内容 优惠卷秒杀 通过本章节我们可以学会Redis的计数器功能 结合Lua完成高性能的redis操作同时学会Redis分布式锁的原理包括Redis的三种消息队列 附近的商户 我们利用Redis的GEOHash来完成对于地理坐标的操作 UV统计 主要是使用Redis来完成统计功能 用户签到 使用Redis的BitMap数据统计功能 好友关注 基于Set集合的关注、取消关注共同关注等等功能这一块知识咱们之前就讲过这次我们在项目中来使用一下 达人探店 基于List来完成点赞列表的操作同时基于SortedSet来完成点赞的排行榜功能 由于该项目主要是为了学习Redis所以不会设计为微服务架构简化代码复杂度所以采用前后端分离的单体架构 说明 手机或者app端发起请求请求我们的nginx服务器nginx基于七层模型走的事HTTP协议可以实现基于Lua直接绕开tomcat访问redis也可以作为静态资源服务器轻松扛下上万并发 负载均衡到下游tomcat服务器打散流量我们都知道一台4核8G的tomcat在优化和处理简单业务的加持下大不了就处理1000左右的并发 经过nginx的负载均衡分流后利用集群支撑起整个项目同时nginx在部署了前端项目后更是可以做到动静分离进一步降低tomcat服务的压力这些功能都得靠nginx起作用所以nginx是整个项目中重要的一环。 在 tomcat 支撑起并发流量后我们如果让 tomcat 直接去访问 Mysql 根据经验 Mysql 企业级服务器只要上点并发一般是16或32 核心cpu32 或64G内存像企业级mysql加上固态硬盘能够支撑的并发大概就是4000起~7000左右上万并发 瞬间就会让Mysql服务器的cpu硬盘全部打满容易崩溃所以我们在高并发场景下会选择使用mysql集群同时为了进一步降低Mysql的压力同时增加访问的性能我们也会加入Redis同时使用Redis集群使得Redis对外提供更好的服务。 1.1 项目准备 请看《瑞_Redis_短信登录一》
1.2 基于Session实现登录流程
1.2.1 发送短信验证码 用户在提交手机号后会校验手机号是否合法如果不合法则要求用户重新输入手机号 如果手机号合法后台此时生成对应的验证码同时将验证码进行保存然后再通过短信的方式将验证码发送给用户 发送短信验证码业务流程图如下 1.2.2 短信验证码登录、注册 用户将验证码和手机号进行输入后台从 session 中拿到当前验证码然后和用户输入的验证码进行校验如果不一致则无法通过校验如果一致则后台根据手机号查询用户如果用户不存在则为用户创建账号信息保存到数据库快捷注册无论是否存在都会将用户信息保存到 session 中方便后续获得当前登录信息 1.2.3 校验登录状态 登录成功后用户在请求时候会从 cookie 中携带者 sessionId 到后台后台通过 sessionId 从 session 中拿到用户信息如果没有 session 信息则进行拦截如果有 session 信息则将用户信息保存到 threadLocal 中并且放行。 1.3 实现发送短信验证码功能
1.3.1 页面流程 点击首页中“我的”按钮进入个人页面就会跳转到登录页面用户输入手机号后点击“发送验证码”时相关请求就会发送到后端服务端就是要实现发送短信验证码这个请求的功能 1.3.2 代码实现 业务流程图点我跳转查看
发送验证码代码 1️⃣ UserController 的 sendCode 方法 图为未实现前 /*** 发送手机验证码*/PostMapping(code)public Result sendCode(RequestParam(phone) String phone, HttpSession session) {// 发送短信验证码并保存验证码return userService.sendCode(phone, session);}2️⃣ IUserService 接口中声明 sendCode 方法
public interface IUserService extends IServiceUser {Result sendCode(String phone, HttpSession session);
}3️⃣ UserServiceImpl 实现类中实现 sendCode 方法
Slf4j
Service
public class UserServiceImpl extends ServiceImplUserMapper, User implements IUserService {Overridepublic Result sendCode(String phone, HttpSession session) {// 1.校验手机号if (RegexUtils.isPhoneInvalid(phone)) {// 2.如果不符合返回错误信息return Result.fail(手机号格式错误);}// 3.符合生成验证码String code RandomUtil.randomNumbers(6);// 4.保存验证码到 sessionsession.setAttribute(code, code);// 5.发送验证码此处为模拟真实要调用第三方接口较为复杂记得加上Slf4j注解log.debug(发送短信验证码成功验证码{}, code);// 返回okreturn Result.ok();}
} 瑞此处第5步为模拟发送验证码真实要调用QQ邮箱、阿里云等第三方服务等接口较为复杂不是学习Redis的重点就以日志记录表示发送验证码步骤 1.4 后续内容会尽快更新
1.5 后续内容会尽快更新
1.6 后续内容会尽快更新 本文是博主的粗浅理解可能存在一些错误或不完善之处如有遗漏或错误欢迎各位补充谢谢 如果觉得这篇文章对您有所帮助的话请动动小手点波关注你的点赞收藏⭐️转发评论都是对博主最好的支持~