通过 Cookie、Redis共享Session 和 Spring 拦截器技术,实现对用户登录状态的持有和清理(四)

本篇内容对应
“2.5 开发登录、退出功能” 小节
“4.7 优化登陆模块” 小节
2.6 显示登录信息
2.7 账号设置
2.8 检查登录状态

登录功能的流程是什么?

在这里插入图片描述

UUID为什么不会重复?

因为UUID是基于mac物理地址、时间戳、随机数等信息生成。因此UUID居于极高的唯一性

login_ticket 表各个字段的含义和作用?

在这里插入图片描述
id:主键
user_id : 用于查询对应的用户信息。
ticket:浏览器cookie保存的ticket,使用uuid作为值,唯一表示一台浏览器。用户登录之后,服务器会返回一个Set-Cookie: ticket=uuid。浏览器保存cookie,下一次请求时会带上这个ticket。
status:用于在这个ticket还没过过期时间时,退出登录功能。退出时可以将status设置成1,不用管过期时间到没到。
expired:过期时间,用户登录一段时间后后需要重新登录,这里的过期时间和cookie的过期时间设置成一致的。

LoginTicketInterceptor中的preHandle、postHandle和afterCompletion有什么用?

在这里插入图片描述
在handler(controller类里面的方法)执行之前,得到当前请求的user,放在HostHolder里面,HostHolder本质上是一个ThreadLocl,以线程为单位,tomcat有一个线程池,对应每一个请求,如果线程池空闲,就会去一个线程池来单独处理该请求。
在这里插入图片描述

后端服务器和Thymeleaf分别如何获取当前登录用户?

后端服务器,controller、service、dao等层在preHandle之后,postHandle之前执行,所以要获取当前用户,需要使用HostUser容器
Thymeleaf模板引擎在postHandle之后,afterCompletion之前运行,所以通过"${loginUser}"获取当前登录的用户

在这里插入图片描述

从获取登录页面、提交登录,登录后第三次请求过程?

在这里插入图片描述

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值