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

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.xdnf.cn/news/19430.html

相关文章:

  • 虚拟化技术是什么?电脑Bios中的虚拟化技术怎么开启
  • S32K3平台FEE 应用笔记
  • C++ 多线程实战 01|为什么需要线程:并发 vs 并行,进程 vs 线程
  • 6 种可行的方法:小米手机备份到电脑并恢复
  • js语言编写科技风格博客网站-详细源码
  • AI-调查研究-66-机器人 机械臂 软件算法体系:轨迹规划·视觉定位·力控策略
  • 网络层和数据链路层
  • 智能对话系统优化方案:解决响应偏差与个性化缺失问题
  • OpenStack网络类型解析
  • 超越Transformer:语言模型未来的认知革命与架构重构
  • 手写MyBatis第47弹:Interceptor接口设计与Invocation上下文传递机制--MyBatis动态代理生成与方法拦截的精妙实现
  • uniApp 混合开发全指南:原生与跨端的协同方案
  • shell编程基础入门-3
  • Ansible之playbook剧本
  • 【Spark Core】(三)RDD的持久化
  • nrf52840 解锁
  • Linux部署OSM本地服务测试环境
  • Ubuntu 25.10 Snapshot4 发布。
  • 电动两轮车手机导航投屏方案调研报告
  • 「日拱一码」076 深度学习——自然语言处理NLP
  • SOME/IP-SD中IPv4端点选项与IPv4 SD端点选项
  • Coze源码分析-工作空间-资源库-前端源码
  • 掌握正则表达式与文本处理:提升 Shell 编程效率的关键技巧
  • FFmpeg 不同编码的压缩命令详解
  • 【扩充位数三位变五位】2022-10-30
  • mysql导出csv中字段里有换行符的处理办法及hive导出处理办法
  • 【php反序列化字符串逃逸】
  • Go 面试题: new 和 make 是什么,差异在哪?
  • ADSL 代理 Proxy API 申请与使用指南
  • NLP技术突破:浅层与深层语义分析全解析