当前位置: 首页 > news >正文

登录拦截功能实现 -瑞吉外卖笔记

1 配置webfilter注解,设置要拦截处理的路径,先设置全部路径,后面分析放行就行
@WebFilter(filterName = "LoginCheckFilter",urlPatterns = "/*")

  2 编写filter,拦截器类,编写拦截的的逻辑代码

package com.itheima.reggie_take_out.filter;import com.alibaba.fastjson.JSON;
import com.itheima.reggie_take_out.common.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.util.AntPathMatcher;
import javax.servlet.*;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.logging.LogRecord;@WebFilter(filterName = "LoginCheckFilter",urlPatterns = "/*")
@Slf4j
public class LoginCheckFilter implements Filter {//路径匹配器public  static final AntPathMatcher PATH_MATCHER=new AntPathMatcher();public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws ServletException, IOException {HttpServletRequest request=(HttpServletRequest) servletRequest;HttpServletResponse response=(HttpServletResponse) servletResponse;String requestURI=request.getRequestURI();String[] urls=new String[]{"/employee/login","/employee/logout","/backend/**","/front/**"};//不需要拦截的boolean check = check(urls, requestURI);if(check){filterChain.doFilter(request,response);log.info("请求不需要处理;{}",request.getRequestURI());return;}if(request.getSession().getAttribute("employee")!=null){filterChain.doFilter(request,response);log.info("已登录,用户ID;{}",request.getSession().getAttribute("employee"));return;}response.getWriter().write(JSON.toJSONString(R.error("NOTLOGIN")));log.info("拦截请求;{}",request.getRequestURI());return;}//路径匹配public boolean check(String[] urls,String requestURI){for(String url:urls){boolean match= PATH_MATCHER.match(url,requestURI);if(match){return true;}}return false;}}

3 在启动类上组件扫描

@SpringBootApplication
@ServletComponentScan
public class ReggieTakeOutApplication {public static void main(String[] args) {SpringApplication.run(ReggieTakeOutApplication.class, args);log.info("项目启动");}}

http://www.lryc.cn/news/573794.html

相关文章:

  • Windows 后渗透中可能会遇到的加密字符串分析
  • 等等等等等等
  • PostgreSQL全栈部署指南:从零构建企业级高可用数据库集群
  • pyqt f-string
  • jenkins对接、jenkins-rest
  • LocalAI: OpenAI、Claude 等的开源替代
  • 3、NLP黄金九步法(问题定义-数据获取-数据探索)
  • Flink Connector Kafka深度剖析与进阶实践指南
  • js 函数参数赋值问题
  • 【Android】am命令
  • ROS 2 中 Astra Pro 相机与 YOLOv5 检测功能编译启动全记录
  • Oracle 数据库查询:单表查询
  • 华为云Flexus+DeepSeek征文|开启DeepSeek-V3+R1商用服务之旅
  • 查询消耗 IO 多的 SQL -达梦
  • C++法则1:在 C++ 中,所有的具名变量都是左值,即使它们的类型是右值引用。
  • 云原生/容器相关概念记录
  • 第八章 网络安全
  • 基于Vue.js的图书管理系统前端界面设计
  • 包教包会,ES6类class的基本入门
  • TS类型啊啊啊2
  • 计算机系统结构课堂测验
  • Claude:Anthropic打造的安全优先AI助手
  • 2025中科院2区SCI-状态优化算法Status-based Optimization-附Matlab免费代码
  • 基于split-Bregman算法的L1正则化matlab仿真,对比GRSR算法
  • 《情感反诈模拟器》2025学习版
  • 【Redis】解码Redis中hash类型:理解基础命令,以及内部编码方式和使用场景
  • Docker Desktop 4.42集成的MCP工具包
  • 安卓对外发布工程源码:怎么做到仅UI层公布
  • linux-vim编辑器
  • Perplexity AI:对话式搜索引擎的革新者与未来认知操作系统