登录校验-Filter-入门

news/2024/10/17 23:34:45/

目录

前言

过滤器(Filter)

快速入门

步骤

详解

登录校验-Filter

具体代码

运行思路

小结


前言

  • 在前面的文章中,我们已经实现了对于用户登陆成功后,生成并下发令牌返回至前端等功能接口的实现,JWT令牌就是用户成功登录后的凭证,接下来我们实现如何统一校验JWT令牌,涉及的技术主要有两种过滤器Filter拦截器Interceptor。如果不适用Filter或者Interceptor则需要在后端代码中的每一个请求控制器类中进行JWT令牌的校验操作,工作量繁琐且单一

过滤器(Filter)

  • 概念:Filter过滤器,时JavaWeb三大组件(Servlet、Filter、Listener)之一
  • 过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能
  • 过滤器一般完成一些通用操作,比如:登录校验、统一编码处理、敏感字符处理

快速入门

步骤

  • 第一Filter:定义一个类,实现Filter接口(),并重写其中的所有方法
  • 配置Filter:Filter类上加上@WebFilter注解,配置拦截资源的路径。启动类加上@ServletComponentScan开启Servlet组件支持。

详解

登录校验-Filter

具体代码

Filter类

package com.example.tlias.Filter;import jakarta.servlet.*;
import jakarta.servlet.annotation.WebFilter;import java.io.IOException;@WebFilter("/*") // todo 设置当前过滤器要拦截的请求
public class JWTFilter implements Filter {@Override// todo  初始化方法,Web服务器启动时,创建Filter时调用,只调用一次public void init(FilterConfig filterConfig) throws ServletException {Filter.super.init(filterConfig);System.out.println("init初始化方法执行了");}@Override  // todo 拦截到请求时就会调用该方法,可调用多次public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("拦截到请求");// todo 放行请求,让其访问对应的资源 filterChain.doFilter(servletRequest, servletResponse);}@Override // todo 销毁方法,服务器关闭时调用,只调用一次public void destroy() {Filter.super.destroy();System.out.println("destroy销毁方法执行了");}
}

启动类

package com.example.tlias;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;// Generated by https://start.springboot.io
// 优质的 spring/boot/data/security/cloud 框架中文文档尽在 => https://springdoc.cn@ServletComponentScan  // todo 使当前项目于支持Servlet项目,Filter组件属于Servlet
@SpringBootApplication
public class TliasApplication {public static void main(String[] args) {SpringApplication.run(TliasApplication.class, args);}}

运行思路

  • 在创建的Filter类中实现Servlet中的组件Filter,从而实现过滤器的功能,同时设置要拦截的请求类型之后,需要在SpringBoot项目的启动类中添加@ServletComponentScan用于扫描和注册Servlet、Filter和Listener组件,而在Filter类中的注解@WebFilter将创建的Filter类注册为Filter组件。当发起的请求需要被Filter类拦截时,Filter类就会被调用。

小结

  • Filter快速入门
    • 定义:实现Filter接口
    • 配置:@WebFilter、@ServletComponentScan

http://www.ppmy.cn/news/1063078.html

相关文章

几个nlp的小任务(抽取式问答)

几个nlp的小任务(抽取式问答) 安装库抽取式问答介绍、SQuAD数据集初始化参数加载、导入数据集查看数据集示例加载tokenizer对长文本处理的演示对答案的位置进行验证整合刚才的步骤对数据集中的数据进行预处理加载微调模型设置args 参数使用数据清洗设置训练函数,开始训练安装…

A股自动交易,自动止盈止损,自动打板

一、前言 炒股的都知道,股市里最难克服的就是人性。开发这个项目的初衷即是想通过机器来克服人性的弱点。因为只要把策略定好,机器会无条件挂单。该止损止损,该止盈止盈。 短线的话卖比买更重要:复盘就会发现,大的亏…

第一百二十五回 dart中List和Map的常见用法

文章目录 概念介绍使用方法初始化相互转换元素操作 经验分享 我们在上一章回中介绍了Flexible组件相关的内容,本章回中将介绍 dart中的List和Map.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在这里介绍的List也叫列表,它表示一组相…

RK3399 开机自启一个shell脚本,一直起不来BUG

开机自启shell脚本如下: diff --git a/device/rockchip/common/sepolicy/file_contexts b/device/rockchip/common/sepolicy/file_contexts index eb6b5e4bb4..0bbe781a7c 100755 --- a/device/rockchip/common/sepolicy/file_contextsb/device/rockchip/common/se…

算法笔记:球树

1 KD树的问题 算法笔记:KD树_UQI-LIUWJ的博客-CSDN博客 在kd树中,导致性能下降的最核心因素是因为kd-tree中被分割的子空间是一个个的超方体,而求最近邻时使用的是欧式距离(超球)。超方体与超球体相交的可能性是极高…

深度学习4. 循环神经网络 – Recurrent Neural Network | RNN

目录 循环神经网络 – Recurrent Neural Network | RNN 为什么需要 RNN ?独特价值是什么? RNN 的基本原理 RNN 的优化算法 RNN 到 LSTM – 长短期记忆网络 从 LSTM 到 GRU RNN 的应用和使用场景 总结 百度百科维基百科 循环神经网络 – Recurre…

字节流概述,及字节流写数据的三种方式

1.IO流概述和分类 如果数据通过记事本打开,我们还可以读懂里面的内容就使用字符流,否则使用字节流。如果不知道使用哪种类型的流,就使用字节流。 2.字节流写数据 创建字节输出流的时候,一共做了三件事情。 调用系统功能创建了文…

国际版阿里云/腾讯云CDN装备运用教程:加快网站拜访速度

阿里云CDN装备运用教程:加快网站拜访速度 本文旨在为读者供给一个关于阿里云CDN的简要教程。咱们将介绍阿里云CDN的基本概念、资源加快过程、同步资源设置以及与阿里云OSS目标存储的结合。期望经过这篇教程,读者能够更好地了解和利用阿里云CDN服务&…