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

Interceptor拦截器入门知识及其工作原理

Interceptor拦截器入门知识及其工作原理

一、入门知识

1.1总述

1.2案例代码

import com.hechixueyuan.forestfiredetectionsystem.pojo.Result;
import com.hechixueyuan.forestfiredetectionsystem.utils.JwtUtils;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
@Slf4j
//定义拦截器
@Component
public class LoginCheckInterceptor implements HandlerInterceptor {@Override
//    该方法在目标资源方法运行前运行,返回Ture则放行,返回false则不放行public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String url = request.getRequestURI().toString();log.info("请求url:{}",url);// 1. 处理跨域:允许OPTIONS预检请求直接放行if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {log.info("OPTIONS预检请求,放行");
//            在拦截器中的放行操作是return turereturn true;}if(url.contains("login")){log.info("登录操作,放行...");return true;}
//        获取请求头当中的令牌String jwt = request.getHeader("token");
// 5. 判断令牌是否存在if (!StringUtils.hasLength(jwt)) {log.info("令牌不存在,返回错误信息");
//            不能放行return false;}// 6. 解析令牌,失败则返回未登录try {JwtUtils.parseJWT(jwt); // 确保JwtUtils的parseJWT方法正确实现} catch (Exception e) {log.info("令牌解析失败,错误信息:{}", e.getMessage());
//            不能放行return false;}// 7. 令牌有效,放行log.info("令牌有效,放行...");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("postHandle");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("afterCompletion");}
}

二、工作原理

http://www.dtcms.com/a/360928.html

相关文章:

  • Python OpenCV图像处理与深度学习:Python OpenCV图像滤波入门
  • gradle安装、配置环境变量、配置阿里源及idea 中配置gradle
  • RabbitMinQ(模拟实现消息队列项目)02
  • Axure科技感可视化原型案例:赋能设计与研发的宝藏资源
  • 二、感知机
  • 你的Redis是不是在家能用,到了学校就连不上?
  • CPTS-Vintage 票据,基于资源的约束委派 (RBCD),DPAPI密钥
  • 搭建APP应用程序如何选择服务器
  • ‌NAT穿透技术原理:P2P通信中的打洞机制解析‌
  • 【机器学习入门】4.4 聚类的应用——从西瓜分类到防控,看无监督学习如何落地
  • Windows11安装WSL教程
  • HBase实战(一)
  • golang json v1 和 v2对比差异
  • 【重学MySQL】九十六、MySQL SQL Mode高效配置全攻略
  • Beego: Go Web Framework 详细指南
  • ⚡ Linux xargs 命令参数详解
  • 【数据可视化-103】蜜雪冰城门店分布大揭秘:2025年8月数据分析及可视化
  • Ubuntu 25.10 Snapshot4 发布。
  • 小迪Web自用笔记23
  • Linux 定时任务 crontab 完全指南 —— 让服务器自动干活,解放双手
  • 【XR技术概念科普】详解6DoF:为什么它是沉浸感的关键?
  • 【开题答辩全过程】以 健身爱好者饮食管理小程序为例,包含答辩的问题和答案
  • 餐饮门店的小程序怎么做?如何开发餐饮店下单小程序?
  • Rinetd解决服务器IP端口的转发
  • Adobe Illustrator 2025最新破解教程下载安装教程,Illustrator2025最新版下载
  • Adobe Photoshop 2025 最新下载安装教程,附PS2025下载
  • 自由学习记录(91)
  • 从零开始的python学习——函数(1)
  • stdexcept介绍与使用指南
  • 13 选 list 还是 vector?C++ STL list 扩容 / 迭代器失效问题 + 模拟实现,对比后再做选择