没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
博客须知
本篇博客内容来源与黑马点评项目实战篇-16.用户签到-实现签到功能
哔哩哔哩
bilibili,作者对视频
内容进行了整合,由于记笔记时图片使用的是本地路径,所以导致博客的图片无法正常显示,如果
有图片需求可以下载上方的pdf
须知
该项目主要是通过Redis实现的,基本上把Redis的使用场景学了个遍
封装Redis工具类和生成分布式id需要重点学习一下,这两块的思路很好
本篇博客不包含课程中的自研分布式锁的内容,因为我以前跟着周阳的redis课程和谷粒商城
自研过两遍了
Redis版本的消息队列很鸡肋,所以我在这边博客给出了秒杀优化的RabbitMQ的实现版本
不足
黑马课程都是挺圆滑的,比如解决缓存穿透有存储空值和布隆过滤器等实现方式,黑马在这一
块挑了好实现的存储空值的方式,另一种讲都没讲
还要Redis版本的消息队列,这个真就没必要学了,看看这一块业务逻辑就行了,到时候换别
的消息队列实现
短信登录
环境搭建
1.导入sql文件
黑马公众号可以获取到sql等资源,或者通过本篇博客上方绑定的sql文件获取】
其中的表包括【要求MySQL版本在5.7以上】
tb_user:用户表、tb_user_info:用户详情表、tb_blog:用户日记表(达人探店日记)、
tb_follow:用户关注表
tb_shop:商户信息表、tb_shop_type:商户类型表
tb_voucher:优惠券表、tb_voucher_order:优惠券的订单表
创建一个hmdp的数据库,然后运行sql文件
.
2.项目架构
.
3.后端项目部署
ps:在资料中提供了一个项目源码
1. 导入后端项目
2. 修改配置文件
3. 测试是否能正常访问localhost:8081/shop-type/list
server:
port: 8081
spring:
application:
name: hmdp
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/hmdp?useSSL=false&serverTimezone=UTC
username: root
password: 自己的数据库密码
redis:
host: redis主机所在的ip
port: 6379
#password: 123321 如果redis服务器有配置密码,这里就要设置
lettuce:
pool:
max-active: 10
max-idle: 10
min-idle: 1
time-between-eviction-runs: 10s
jackson:
default-property-inclusion: non_null # JSON处理时忽略非空字段
mybatis-plus:
type-aliases-package: com.hmdp.entity # 别名扫描包
logging:
level:
com.hmdp: debug
.
基于Session实现登录
业务流程
发送验证码:用户在提交手机号后,会校验手机号是否合法
如果不合法,则要求用户重新输入手机号
如果手机号合法,后台此时生成对应的验证码,同时将验证码进行保存,然后再通过短信的方
式将验证码发送给用户
短信验证码登录、注册:用户将验证码和手机号进行输入,后台从session中拿到当前验证码,然
后和用户输入的验证码进行校验
如果不一致,则无法通过校验
如果一致,则后台根据手机号查询用户
如果用户不存在,则为用户创建账号信息,保存到数据库
无论是否存在,都会将用户信息保存到session中,方便后续获得当前登录信息
校验登录状态:用户在请求时候,会从cookie中携带者JsessionId到后台,后台通过JsessionId从
session中拿到用户信息
如果没有session信息,则进行拦截,如果有session信息
则将用户信息保存到threadLocal中,并且放行
登录功能是和用户有关的,所以以下功能的实现都是围绕UserService实现类完成的
短信验证登录/注册
发送短信验证码
页面流程
业务代码
@Slf4j
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements
IUserService {
@Override
public Result sendCode(String phone, HttpSession session) {
//1.校验手机号
if (RegexUtils.isPhoneInvalid(phone)) {
//2.不符合就直接返回错误信息
return Result.fail("手机号格式错误!");
}
//3.符合就生成验证码
String code = RandomUtil.randomNumbers(6);
//4.将验证码保存到session
session.setAttribute("code",code);
//5.发送验证码,这一块是伪实现,如果要实现发送验证码功能可以去阿里云找短信验证的api接
口
log.debug("发送成功,验证码为:{}",code);
剩余93页未读,继续阅读
资源评论
断线续传
- 粉丝: 219
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功