第6讲后端鉴权拦截器实现
后端鉴权拦截器实现
package com.java1234.interceptor;import com.java1234.util.JwtUtils;
import com.java1234.util.StringUtil;
import io.jsonwebtoken.Claims;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** 鉴权拦截器* @author java1234_小锋* @site www.java1234.com* @company Java知识分享网* @create 2021-01-29 14:11*/
public class SysInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String path=request.getRequestURI();System.out.println(path);if(handler instanceof HandlerMethod){String token = request.getHeader("token");System.out.println("token:"+token);if(StringUtil.isEmpty(token)){System.out.println("token为空!");throw new RuntimeException("签名验证不存在");}else{Claims claims = JwtUtils.validateJWT(token).getClaims();if(claims!=null){System.out.println("验证成功");return true;}else{System.out.println("验证失败");throw new RuntimeException("签名失败");}}}else{return true;}}}
新建WebAppConfigurer
package com.java1234.config;import com.java1234.interceptor.SysInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/*** @author java1234_小锋 (公众号:java1234)* @site www.java1234.vip* @company 南通小锋网络科技有限公司*/
@Configuration
public class WebAppConfigurer implements WebMvcConfigurer {@Beanpublic SysInterceptor sysInterceptor(){return new SysInterceptor();}@Overridepublic void addInterceptors(InterceptorRegistry registry) {String []patterns=new String[]{"/user/wxLogin","/image/**"};registry.addInterceptor(sysInterceptor()).addPathPatterns("/**").excludePathPatterns(patterns);}@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOrigins("*").allowCredentials(true).allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE","OPTIONS").maxAge(3600);}@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/image/userAvatar/**").addResourceLocations("file:D:\\uniapp\\userImgs\\");}
}相关文章:
第6讲后端鉴权拦截器实现
后端鉴权拦截器实现 package com.java1234.interceptor;import com.java1234.util.JwtUtils; import com.java1234.util.StringUtil; import io.jsonwebtoken.Claims; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerI…...
uniapp从入门到进阶
一、了解uniapp 跨平台开发:Uniapp可以同时开发多个平台的应用,只需编写一套代码即可。开发者可以通过编写Vue组件来构建界面,通过编写JavaScript代码来实现业务逻辑。 页面和组件:Uniapp的页面和组件都是基于Vue组件的ÿ…...
CDN缓存404、403状态码
可以参考一下:浏览器缓存和 CDN 在前端的落地 事故记录: 前端发版时存在新旧两个容器,在资源替换的间隙,用户请求到的肯定是新容器的html文件,但是根据新容器的html向新静态资源发起请求,此时旧容器还没有…...
【Python网络编程之DHCP服务器】
🚀 作者 :“码上有前” 🚀 文章简介 :Python开发技术 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 Python网络编程之DHCP服务器 代码见资源,效果图如下一、实验要求二、协议原理2.1 D…...
【MySQL】:深入理解并掌握DML和DCL
🎥 屿小夏 : 个人主页 🔥个人专栏 : MySQL从入门到进阶 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一. DML1.1 添加数据1.2 修改数据1.3 删除数据 二. DCL2.1 管理用户2.2 权限控制…...
CSP-动态规划-最长公共子序列(LCS)
一、动态规划 动态规划(Dynamic Programming,简称DP)主要用于求解可以被分解为相似子问题的复杂问题,特别是在优化问题上表现出色,如最短路径、最大子数组和、编辑距离等。动态规划的核心思想是将原问题分解为较小的子…...
安装nodejs2011并配置npm仓库
1. 安装nodejs 选择2011版本下载 在安装目录(个人情况)下 D:\Program Files\nodejs2011创建2个文件夹: node_global (依赖库) node_cache (缓存) 然后在当前目录下cmd进入dos窗口,执行: npm c…...
排序C++代码(已更:快速排序,归并排序)
一、快速排序 #include<iostream> using namespace std;//设定三个数组,判断排序算法代码的正确性 int a[100]{3,4,2,6,9,7,1,0,1,2,3,3,5,6,7,8,3,4,5}; int b[100]{1,5,3,4}; int c[100]{7,8,9,1,2,3};void quickSort(int* num,int l,int r){if(l>r) re…...
CentOS 7.9安装Tesla M4驱动、CUDA和cuDNN
正文共:1333 字 21 图,预估阅读时间:2 分钟 上次我们在Windows上尝试用Tesla M4配置深度学习环境(TensorFlow识别GPU难道就这么难吗?还是我的GPU有问题?),但是失败了。考虑到Windows…...
Java设计模式——策略
前言 策略模式是平时Java开发中常用的一种,虽然已有很多讲解设计模式的文章,但是这里还是写篇文章来从自己理解的角度讲解一下。 使用场景 我们不妨进行场景假设,要对我们的软件进行授权管理:在启动我们的软件之前先要校验是否…...
线性代数的本质 1 向量
向量是线性代数中最为基础的概念。 何为向量? 从物理上看, 向量就是既有大小又有方向的量,只要这两者一定,就可以在空间中随便移动。 从计算机应用的角度看,向量和列表很接近,可以用来描述某对象的几个不同…...
基于JAVA的贫困地区人口信息管理系统 开源项目
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 人口信息管理模块2.2 精准扶贫管理模块2.3 特殊群体管理模块2.4 案件信息管理模块2.5 物资补助模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 人口表3.2.2 扶贫表3.2.3 特殊群体表3.2.4 案件表3.2.5 物资补助表 四…...
【后端高频面试题--Mybatis篇】
🚀 作者 :“码上有前” 🚀 文章简介 :后端高频面试题 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 后端高频面试题--Mybatis篇 什么是Mybatis?Mybatis的优缺点?Mybatis的特点…...
【笔记】Helm-5 Chart模板指南-12 .helmignore文件
.helmignore文件 .helmignore文件用来指定您不想包含在您的helm chart中的文件。 如果该文件存在,helm package命令会在打包应用时忽略所有在.helmignore文件中匹配的文件。 有助于避免不需要的或敏感文件及目录添加到您的helm chart中。 .helmignore文件支持Uni…...
【MySQL】表的增删改查(基础)
MySQL表的增删改查(基础) 1. CRUD2. 新增(Create)2.1 单行数据全列插入2.2 多行数据 指定列插入 3. 查询(Retrieve)3.1 全列查询3.2 指定列查询3.3 查询字段为表达式3.4 别名3.5 去重:DISTINCT…...
Android矩阵Matrix动画缩放Bitmap移动手指触点到ImageView中心位置,Kotlin
Android矩阵Matrix动画缩放Bitmap移动手指触点到ImageView中心位置,Kotlin 借鉴 Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心,Kotlin(2)-CSDN博客 在此基础上实现手指在屏幕上点击后&…...
C语言:表达式求值
引言:在笔试中,有一类的题目,题目给出代码,要求分析得出输出结果。这类题目更加考察我们对于运算顺序和运算类型转换的理解。文章介绍了隐式类型转换和操作符注意点,希望增加读者对于表达式求值的理解。 1.隐式类型转…...
GO 的 Web 开发系列(五)—— 使用 Swagger 生成一份好看的接口文档
经过前面的文章,已经完成了 Web 系统基础功能的搭建,也实现了 API 接口、HTML 模板渲染等功能。接下来要做的就是使用 Swagger 工具,为这些 Api 接口生成一份好看的接口文档。 一、写注释 注释是 Swagger 的灵魂,Swagger 是通过…...
【极数系列】Flink集成KafkaSink 实时输出数据(11)
文章目录 01 引言02 连接器依赖2.1 kafka连接器依赖2.2 base基础依赖 03 使用方法04 序列化器05 指标监控06 项目源码实战6.1 包结构6.2 pom.xml依赖6.3 配置文件6.4 创建sink作业 01 引言 KafkaSink 可将数据流写入一个或多个 Kafka topic 实战源码地址,一键下载可用…...
我为什么选择Xamarin开发ios app安卓app
临岁之寒简书作者,转载 Xamarin是一项跨平台开发技术,之前是收费的,而且据说收费不菲,所以使用的人数比较少,在国内几乎无人问津。后来Xamarin被微软收购,现已免费开放,相信今后国内的使用人群会大幅地增长…...
第六届计算机、遥感与航空航天国际学术会议(CRSA 2026)
第六届计算机、遥感与航空航天国际学术会议(CRSA 2026)将于2026年6月26-28日在中国辽宁-沈阳举行。计算机、遥感与航空航天国际学术会议为来自世界各地的研究学者、工程师、学会会员以及相关领域的专家们提供一个关于“计算机科学”、“遥感技术与应用”…...
Auto Edit 日常迭代踩坑实录:OpenAI Codex CLI 三种权限模式配置差异与 2 类高频报错修复
1. Auto Edit 模式不是“全自动”,而是最易失控的权限模式 大多数人第一次在项目里启用 codex cli --mode=auto-edit,是冲着“自动改代码”去的。我也是。直到某天凌晨两点,CI 流水线突然报出 17 个 test failure,而 git diff 显示——它把一个 if (user.role === admin) …...
从零开始用vnpy搭建你的第一个量化交易机器人(保姆级Python教程)
从零开始用vnpy搭建你的第一个量化交易机器人(保姆级Python教程) 第一次接触量化交易时,我被那些复杂的术语和代码吓得不轻。直到发现vnpy这个Python框架,才真正找到了入门的方向。vnpy就像是为Python开发者量身定制的量化交易工具…...
STM32驱动OV7670摄像头,从寄存器配置到LCD显示的避坑全记录
STM32与OV7670摄像头实战:从寄存器配置到LCD显示的全链路解析 1. 项目背景与硬件架构设计 在嵌入式视觉系统中,OV7670作为一款低成本CMOS图像传感器,与STM32的组合常被用于智能门禁、工业检测等场景。本项目的核心挑战在于解决传感器输出数据…...
5个技巧快速掌握猫抓插件:免费高效的浏览器资源下载终极指南
5个技巧快速掌握猫抓插件:免费高效的浏览器资源下载终极指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在当今数字内容爆炸的时代…...
3分钟告别窗口切换烦恼:Borderless Gaming让你的游戏体验无缝衔接
3分钟告别窗口切换烦恼:Borderless Gaming让你的游戏体验无缝衔接 【免费下载链接】Borderless-Gaming Play your favorite games in a borderless window; no more time consuming alt-tabs. 项目地址: https://gitcode.com/gh_mirrors/bo/Borderless-Gaming …...
为什么92%的开发者查不到真正“实时”新闻?Perplexity底层时间戳校验机制首度公开
更多请点击: https://intelliparadigm.com 第一章:为什么92%的开发者查不到真正“实时”新闻?Perplexity底层时间戳校验机制首度公开 当开发者在凌晨三点搜索“React 19 正式发布”,返回结果却显示“发布时间:2024-03…...
联发科天玑700/720/900核心板选型指南:5G物联网与智能硬件性能功耗全解析
1. 项目概述:从核心板选型看5G入门级应用的性能锚点 在嵌入式开发和智能硬件领域,选择一颗合适的核心板(Core Board)往往是项目成败的第一步。它集成了处理器、内存、基带、射频等核心部件,直接决定了产品的性能基线、…...
知识库搭建:从认知到实践的完整指南
知识库搭建:从认知到实践的完整指南一、先搞清楚:什么是知识? 数据 → 信息 → 知识 → 智慧 是经典的 DIKW 金字塔,描述了认知逐层升维的过程:层级核心定义关键特征回答的问题示例数据原始事实,raw facts离…...
技术博主都在悄悄用的Perplexity高级搜索语法,11个未公开符号组合全曝光
更多请点击: https://kaifayun.com 第一章:Perplexity高级搜索语法的底层逻辑与设计哲学 Perplexity 的高级搜索语法并非简单的关键词匹配扩展,而是基于语义意图建模与查询图谱重构的设计实践。其核心在于将用户自然语言查询实时编译为可执行…...
