当前位置: 首页 > 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("项目启动");}}

相关文章:

  • 2025年EAAI SCI1区TOP,基于低差异序列的仿果蝇无人机地下环境路径规划算法,深度解析+性能实测
  • 群晖 NAS Docker 镜像加速配置详细教程
  • SpringBean 创建过程详解
  • 【ELK(Elasticsearch+Logstash+Kibana) 从零搭建实战记录:日志采集与可视化】
  • 预训练 vs. 微调:大模型落地的核心两步,究竟有何不同?
  • 【Linux手册】进程地址空间:从虚拟到物理的内存寻址之旅
  • 通义大模型在文档自动化处理中的高效部署指南(OCR集成与批量处理优化)
  • go excel解析库xuri/excelize中的SAX
  • 【PyTorch项目实战】CycleGAN:无需成对训练样本,支持跨领域图像风格迁移
  • 开关电源:BUCK和BOOST
  • NotePad++ 怎么没有找到插件管理?
  • C++ 友元:打破封装边界的“特殊权限”
  • LangChain赋能RAG:从构建到评估优化的一体化实战指南
  • 跨平台多路RTSP/RTMP转RTMP推送模块深度解析
  • Python函数实战:从基础到高级应用
  • ABP VNext + gRPC 双向流:实时数据推送与订阅场景实现
  • 量化-因子处理
  • 原创模板--微信小程序 实现的背单词程序
  • GESP C++ 各等级详细知识点汇总
  • 从单口相声到群口辩论:MultiTalk开源:多角色对话生成SOTA模型,语音-视觉对齐精度达98.7%!
  • 电商网站制作项目描述/2023年8月份新冠
  • 企业邮箱怎么注册格式/seo排名优化关键词
  • h5响应式网站/互联网域名注册查询
  • 百度网站适配代码/什么是网站
  • 江西省赣州市天气预报/c盘优化大师
  • 公司网站可以用个人备案吗/seo课程培训班