第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被微软收购,现已免费开放,相信今后国内的使用人群会大幅地增长…...
雪女-斗罗大陆-造相Z-Turbo社区实践:在CSDN分享自定义风格LoRA训练心得
雪女-斗罗大陆-造相Z-Turbo社区实践:在CSDN分享自定义风格LoRA训练心得 最近在CSDN社区看到不少朋友在讨论用AI模型生成特定风格的角色图,尤其是像“斗罗大陆”这类有大量粉丝基础的作品。大家普遍有个痛点:直接用通用模型生成,角…...
Qwen-Image-2512-SDNQ Web服务API集成:Node.js/Java调用生成图片完整示例
Qwen-Image-2512-SDNQ Web服务API集成:Node.js/Java调用生成图片完整示例 1. 服务概述与核心价值 Qwen-Image-2512-SDNQ-uint4-svd-r32 Web服务是一个基于Flask框架构建的图片生成应用,它将先进的AI图片生成模型封装成易于使用的Web接口。这个服务最大…...
手把手教学:如何在本地运行ChatGLM3-6B对话模型
手把手教学:如何在本地运行ChatGLM3-6B对话模型 1. 项目简介 你是否曾经遇到过这样的情况:想用AI助手帮忙写代码、分析文档或者只是聊聊天,但云端服务要么响应慢,要么担心隐私泄露?今天我要介绍的ChatGLM3-6B本地部署…...
工业软件集成:在SolidWorks中嵌入Qwen3-ASR-0.6B实现语音指令操作
工业软件集成:在SolidWorks中嵌入Qwen3-ASR-0.6B实现语音指令操作 1. 引言 想象一下这个场景:你正在用SolidWorks设计一个复杂的装配体,双手在鼠标和键盘之间来回切换,一会儿旋转视图,一会儿调整尺寸,一会…...
SPI Flash时序参数详解:如何用Synopsys VIP验证Micron芯片的HOLD时序
SPI Flash时序验证实战:Synopsys VIP在Micron芯片HOLD时序分析中的应用 当硬件验证工程师面对SPI Flash芯片时,时序参数的精确验证往往是项目成败的关键。Micron作为主流存储芯片供应商,其SPI Flash产品广泛应用于嵌入式系统和FPGA设计中&…...
Qwen3.5-4B-Claude-Opus-GGUF保姆级教程:从零启动Web问答服务全流程
Qwen3.5-4B-Claude-Opus-GGUF保姆级教程:从零启动Web问答服务全流程 1. 模型与平台介绍 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF是一个基于Qwen3.5-4B的推理蒸馏模型,特别强化了结构化分析、分步骤回答以及代码与逻辑类问题的处理能力。…...
【C++ 面试突击 · 05】大厂高频面试题:从内联函数到内存管理全梳理
目录 一、什么是inline函数? 二、inline函数的优缺点? 三、inline和宏定义的比较? 四、虚函数(virtual)可以是内联函数(inline)吗? 五、C中struct和class的区别? 六…...
微信毕业设计基于微信小程序的易物小店交换系统
前言 Spring Boot 易物小店交换系统是一个基于 Web 的应用程序,利用 Spring Boot 框架构建,主要用于帮助用户实现物品交换的功能。该系统为用户提供了一个便捷、安全、高效的平台,让他们能够轻松地发布自己想要交换的物品信息,寻找…...
开关电源环路补偿:单个极点与零点的实战配置与拓扑适配
1. 开关电源环路补偿的核心概念 第一次接触开关电源环路补偿时,我被那些专业术语搞得晕头转向。直到有一次在实验室调试Buck电路,亲眼看到相位裕度不足导致的振荡现象,才真正理解极点和零点的实际意义。简单来说,环路补偿就像给电…...
深度学习计算机视觉:从原理到实践
深度学习计算机视觉:从原理到实践 1. 背景与动机 计算机视觉是深度学习最成功的应用领域之一。从图像分类到目标检测,从语义分割到图像生成,深度学习技术已广泛应用于自动驾驶、医疗影像、工业检测等领域。本文将介绍计算机视觉的核心技术和实…...
