登录校验-Filter-入门

目录

前言

过滤器(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

你可能感兴趣的:(Java,Web学习跟踪笔记,spring,boot,java,后端,Filter,Servlet)