Web后端开发登录校验及JWT令牌,过滤器,拦截器详解

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第1张图片

如果用户名正确则成功进入

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第2张图片

登录功能

代码

Controller

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第3张图片

Service

Mapper

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第4张图片

结果

若登录成功结果如下: 

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第5张图片

如果登录失败,结果如下

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第6张图片

登录校验

为什么需要登录校验

 有时再未登录情况下,  我们也可以直接访问部门管理, 员工管理等功能

因此我们需要一个登录校验操作,  只有确认用户登录的过程中才可以访问上述功能

若发现没有登录, 则不允许访问上述功能, 直接给前端响应一个错误的结果, 最终跳转到登录页面  

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第7张图片

浏览器与服务交互使用的协议http是一个无状态协议, 即下一次请求不会携带上一次请求的数据

如图,  先后访问login, emps操作的两次请求是独立的, 所以正常来讲无法判断员工是否登录

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第8张图片

所以我们可以在员工登录成功之后存储一个登录标记

这样我们就可以在每个接口前面做一个条件判断, 若有这个标记就正常执行

没有登录就返回错误信息即可

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第9张图片

为了简化在所以接口前面都做判断,  可以提供一个统一拦截,来拦截浏览器发送过来的所有请求,进而通过请求校验员工是否登录

校验方式就是获取之前存储的登录标记, 如果存在这个标记说明已经登录了,直接放行(红色粗箭头)

没获取到就返回给前端错误信息, 跳转登录界面

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第10张图片

会话技术

1.

多次体现在登录一次建立连接后可以访问不同接口

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第11张图片

当三个浏览与服务器同时建立会话, 则存在三个会话

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第12张图片

2.

而因为Http协议的每次请求都是独立的, 所以同一会话中的多次请求是无法进行数据共享的, 想解决这个问题就要使用会话跟踪技术的

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第13张图片

3. 

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第14张图片

4. 会话跟踪方案对比

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第15张图片

 浏览器首次请求, 服务器会自动在响应中加入一个cookie, 浏览器自动存储这个cookie, 下次发送请求还会自动带上这个cookie, 统一拦截时若请求中带有cookie说明已经登录过了

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第16张图片

跨域:

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第17张图片

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第18张图片

浏览器首次请求后, 服务器查看请求内部是否有session,

如果有则会检查session是否有效,

如果没有则会建立一个session   

注意: 某马这里讲得不对, session的底层不是基于cookie的, 两者没有相关Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第19张图片

Session存储在服务端, SessionId 存储在浏览器这边,  所以并不会暴露

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第20张图片

JWT令牌

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第21张图片

不是必须存储在cookie中, 也就是不必须存储在PC端,  也可以存储在移动端

令牌存储在客户端不怕伪造, 因为在统一拦截时会检测会检测令牌是否有效

组成

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第22张图片

第一 二 部分是由Base64生成  第三部分是由结合(密钥,一,二部分) 由签名算法生成来 

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第23张图片

使用场景:

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第24张图片
JWT-生成

1, 首先引入依赖

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第25张图片

2. 使用Jwts 工具类,

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第26张图片3. 生成如下

解析JWT

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第27张图片 

 

拦截技术

过滤器Filter

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第28张图片Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第29张图片

Filter快速入门

1. 定义Filter: 定义一个类, 实现Filter接口, 并重写其所有方法

2. 配置Filter: Filter类上加 @WebFilter 注解(标识当前是一个过滤器组件), 配置拦截资源的路径(图中表示所有路径). 并在引导类上加入@ServletComponentScan 开启 Servlet组件支持

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第30张图片

Filter执行流程

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第31张图片

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第32张图片

过滤器链

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第33张图片

登录校验Filter- 流程

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第34张图片

拦截器Interceptor

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第35张图片

拦截器快速入门:

1. 定义拦截器, 实现HandlerInterceptor接口, 并重写其所有方法

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第36张图片

2. 注册拦截器

@Configuration 表示这是个配置类 
@Autowired 注入LoginCheckInterceptor 对象

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第37张图片

拦截器详解

拦截器可以根据需求, 配置不同的拦截路径

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第38张图片

拦截器-执行流程

Tomcat不识别controller程序, 因为他是一个Servlet容器

所以Spring 提供了  DispatcherServlet  前端控制器,   

用来把请求转给Controller

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第39张图片

过滤器和拦截器区别

登录校验Interceptor

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解_第40张图片

你可能感兴趣的:(苍穹外卖总结,spring)