SpringBoot整合Filter过滤器
话不多说,直接上核心代码
1、先创建一个Filter类
package com.qbb.reggie.filter;
import com.alibaba.fastjson.JSON;
import com.qbb.reggie.common.R;
import com.qbb.reggie.properties.AuthProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.AntPathMatcher;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
/**
* @author QIUQIU&LL (个人博客:https://www.cnblogs.com/qbbit)
* @version 1.0
* @date 2022-08-07 22:26
* @Description:
*/
@WebFilter(filterName = "loginCheckFilter", urlPatterns = "/*")
public class LoginCheckFilter implements Filter {
@Autowired
private AuthProperties authProperties;
/**
* 路径检验
*/
public static final AntPathMatcher ANT_PATH_MATCHER = new AntPathMatcher();
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
// 获取请求的URI
String requestURI = request.getRequestURI();
// 判断请求是否需要登录
List<String> authurls = authProperties.getAnyoneurls();
// 校验请求路径
boolean check = check(authurls, requestURI);
if (check) {
// 非受保护资源
filterChain.doFilter(request, response);
return;
}
Object employee = request.getSession().getAttribute("employee");
if (employee != null) {
// 已登录放行
filterChain.doFilter(request, response);
return;
}
// 未登录
response.getWriter().write(JSON.toJSONString(R.error("NOTLOGIN")));
return;
}
/**
* 路径匹配,检查下次请求是否需要
*
* @param urls
* @param requestURI
* @return
*/
private boolean check(List<String> urls, String requestURI) {
for (String url : urls) {
boolean match = ANT_PATH_MATCHER.match(url, requestURI);
if (match) {
return true;
}
}
return false;
}
}
2、配置文件信息
app:
auth:
anyoneurls:
# 需要登录才能访问的资源
- /employee/login
- /employee/logout
- /backend/**
- /front/**
3、主启动类上加注解
@ServletComponentScan // 开启servlet注解扫描
SpringBoot整合Filter过滤器的更多相关文章
- 【SpringBoot】04.SpringBoot整合Filter的两种方式
SpringBoot整合Filter过滤器的两种方式: 1.通过扫描注解完成Filter组件注册 创建一个类,实现Filter接口,实现doFilter()方法 在该类使用注解@WebFilter,设 ...
- 02-02:springboot 整合filter
1.通过注解扫描完成Filter组件的注册 1.1编写filter (添加拦截的servlet) //@WebFilter(filterName = "FirstFilter",u ...
- 【使用篇二】SpringBoot整合Filter(2)
两种方式: 通过注解扫描完成 Filter 组件的注册 通过方法完成 Filter 组件的注册 一.通过注解扫描完成 Filter 组件的注册 1. 编写Filter类 /** * SpringBoo ...
- springboot整合filter
新建一个项目 新建Firstfilter类 Firstfliter.java package com.example.filter; import java.io.IOException; impor ...
- SpringBoot使用Filter过滤器处理是否登录的过滤时,用response.sendRedirect()转发报错
1.使用response.sendRedirect("/login")时报错,控制台报错如下: Cannot call sendError() after the response ...
- SpringBoot系列——Filter 过滤器
前言 本文记录一下在SpringBoot项目中是如何使用Filter过滤器 代码.测试 Filter过滤器是servlet包下面的东西,因此我们不需要再额外引包 方法一 直接实现Filter接口,并使 ...
- SpringBoot学习3:springboot整合filter
整合方式一:通过注解扫描完成 Filter 组件的注册 1.编写filter package com.bjsxt.filter; import javax.servlet.*; import java ...
- SpringBoot: 3.SpringBoot整合filter(转)
整合方式一:通过注解扫描完成 Filter 组件的注册 1.编写filter package com.bjsxt.filter; import javax.servlet.*; import java ...
- SpringBoot整合三大组建(Servlet、Listener、Filter)
>[更多资源和教程请关注公众号:**非科班的科班**.如果觉得我写的还可以请给个赞,谢谢大家,你的鼓励是我创作的动力](https://blog.csdn.net/qq_43255017)## ...
- spring boot Filter过滤器的简单使用
springboot使用Filter过滤器有两种方式: 一种是实现Filter接口然后通过@Component注解向项目加入过滤器 另一种是通过配置类来配置过滤器 @Component public ...
随机推荐
- ContentPresenter使用DataTemplate
在使用自定义样式内容时,有时也需要在自定义样式中绑定一下数据模板 可以使用ContentPresenter的ContentTemplate绑定定义好的资源 DateTemplate 用法代码如下 &l ...
- Falcon-7B大型语言模型在心理健康对话数据集上使用QLoRA进行微调
文本是参考文献[1]的中文翻译,主要讲解了Falcon-7B大型语言模型在心理健康对话数据集上使用QLoRA进行微调的过程.项目GitHub链接为https://github.com/iamaru ...
- C#集成ViewFaceCore人脸检测识别库
前言 人脸检测与识别现在已经很成熟了,C# 上有 ViewFaceCore 这个很方便的库,但这种涉及到 native 调用的库,一般会有一些坑,本文记录一下开发和部署的过程. 本文的项目是 AIHu ...
- TCP vs UDP:揭秘可靠性与效率之争
概述 今天我们开始主要讲解TCP的相关知识点.在之前讲解分层章节的时候,我们提到过一个重要观点.在网络层及以下几层,更多的是让主机与主机建立连接,也就是说你的电脑需要知道另一台电脑在哪里才能连接上它. ...
- 【网络爬虫笔记】爬虫Robots协议语法详解
Robots协议是指一个被称为Robots Exclusion Protocol的协议.该协议的主要功能是向网络蜘蛛.机器人等搜索引擎爬虫提供一个标准的访问控制机制,告诉它们哪些页面可以被抓取,哪些页 ...
- 连接远程MySQL报错问题-Datagrip
前言: 记录:DataGrip连接远程服务器MySQL数据库报错问题. 问题: 1.Communications link failure--会话连接失败 原因分析: 1.端口被防火墙了 2.MySQ ...
- SpringBoot2.7升级到3.0的实践分享
背景 最近把项目中的技术框架做一次升级,最重要的就是SpringBoot从2.7.x升级到3.0.x,当然还会有一些周边的框架也会连带着升级,比如Mybatis Plus,SpringCloud等,话 ...
- maven error
1 [INFO] Assembling webapp [crm9] in [/home/wukongcrm/72crm-java/target/ROOT] 2 [INFO] Processing wa ...
- 游戏客户端开发中对MVC模式的思考
话说在前头,我分析MVC模式是为了确定自己要做的独立游戏的结构出来,并不适用于大型商业游戏的开发. MVC模式的概述 关于MVC模式,Model用于存储数据,View层用于显示数据,Controlle ...
- [Python急救站]打印菱形
打印菱形程序 row = int(input("请输入要打印的列数: ")) #打印上面三角 for i in range(row): # i控制行数 for j in range ...