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

基于SpringBoot+vue的token验证

后端:

1,写一个验证token的拦截器

import com.fasterxml.jackson.databind.ObjectMapper;
import com.ffyc.news.model.CommonData;
import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;public class AdminTokenInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String adminToken= request.getHeader("adminToken");boolean ans=JWTUtil.verify(adminToken);if(!ans){PrintWriter printWriter=response.getWriter();CommonData commonData=new CommonData(402,"Token验证失效,请重新登录!");String json=new ObjectMapper().writeValueAsString(commonData);printWriter.write(json);printWriter.close();}return ans;}
}

2,配置拦截器

import com.ffyc.news.util.AdminTokenInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {InterceptorRegistration interceptorRegistration=registry.addInterceptor(new AdminTokenInterceptor());interceptorRegistration.addPathPatterns("/admin/**");interceptorRegistration.excludePathPatterns("/admin/login/login");}//    @Override
//    public void addResourceHandlers(ResourceHandlerRegistry registry) {
//
//    }
}

前端:

1,axios响应拦截

//axios 请求拦截 每次向后端发送
axios.interceptors.request.use(config => {//为请求头对象,添加 Token 验证的 token 字段config.headers.adminToken = window.sessionStorage.getItem('adminToken');return config;
})
axios.interceptors.response.use((resp) => { //正常响应拦截if (resp.data.code == 500) {ElementUI.Message({message: resp.data.message,type: "error"})}if (resp.data.code == 402) {ElementUI.Message({message: resp.data.message,type: "error"})router.replace("/login");}return resp;
});

 

相关文章:

基于SpringBoot+vue的token验证

后端: 1,写一个验证token的拦截器 import com.fasterxml.jackson.databind.ObjectMapper; import com.ffyc.news.model.CommonData; import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest; impor…...

Clickhouse设置多磁盘存储策略

设置多磁盘存储 clickhouse安装完成以后,配置了一个默认的存储空间, 这个只能配置一个目录,如果要使用多个磁盘目录,则需要配置磁盘组策略 查看当前的存储策略 select name, path, formatReadableSize(free_space) as free, fo…...

Python开发运维:Django 4.2.7 使用Celery 5.3.5 完成异步和定时任务

目录 一、实验 1.Django使用Celery完成异步和定时任务 二、问题 1. 如何查看Django版本 一、实验 1.Django使用Celery完成异步和定时任务 (1)安装Django (2)新建Django项目 (3)初始框架 (4)urls.py引用视图views from django.contrib import admin from django.urls imp…...

媒体增加日活量的有效策略

随着数字媒体的蓬勃发展,提高日活量成为媒体平台追求的重要目标之一。日活量的增加不仅意味着更广泛的影响力,还能为媒体平台带来更多的商业机会。以下是一些有效的策略,可帮助媒体提高日活量: admaoyan猫眼聚合 内容优质化&#…...

es6新特性总结

1、支持了let和const,为了防止var声明变量带来的变量提升 (1)、存在块级作用域不存在变量提升(考虑暂时性死区) (2)、不允许重复声明(包括普通变量和函数参数)变量提升…...

Spring Boot + hutool 创建海报图片

Spring Boot hutool 创建海报图片 /*** 分享,生成图片* param id* return*/GetMapping("/getShareImg")public void getShareImg(String id,HttpServletResponse response) throws IOException {CouponConsignSaleClassify byId couponConsignSaleClassifyService…...

0002Java程序设计-springboot在线考试系统小程序

文章目录 **摘 要****目录**系统实现开发环境 编程技术交流、源码分享、模板分享、网课分享 企鹅🐧裙:776871563 摘 要 本毕业设计的内容是设计并且实现一个基于springboot的在线考试系统小程序。它是在Windows下,以MYSQL为数据库开发平台&…...

Linux(Centos)上使用crontab实现定时任务(定时执行脚本)

场景 Windows中通过bat定时执行命令和mysqldump实现数据库备份: Windows中通过bat定时执行命令和mysqldump实现数据库备份_mysqldump bat-CSDN博客 上面讲windows中使用bat实现定时任务的方式,如果是在linux上可以通过crontab实现。 cron是服务名称。…...

【Leetcode合集】20. 有效的括号

20. 有效的括号 20. 有效的括号 代码仓库地址: https://github.com/slience-me/Leetcode 个人博客 :https://slienceme.xyz 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串…...

OpenGL 绘制线(Qt)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里同样对OpenGL中的绘制线操作进行封装,便于后续的操作,很多形状也都是基于线来生成的,如圆形等。 二、实现代码 LineDrawable.h #ifndef LINE_DRAWABLE_H #define LINE_DRAWABLE_H#include...

Java | 多线程并发编程CountDownLatch实践

关注:CodingTechWork 引言 在一次数据割接需求中,数据需要通过编程的方式进行转移割接到新平台,此时若串行化方式,无疑会拉锯此次战斗,所以首当其冲要使用并发编程来降低割接时长。  本次主要考虑使用CountDownLatc…...

分布式定时任务系列6:XXL-job触发日志过大引发的CPU告警

传送门 分布式定时任务系列1:XXL-job安装 分布式定时任务系列2:XXL-job使用 分布式定时任务系列3:任务执行引擎设计 分布式定时任务系列4:任务执行引擎设计续 分布式定时任务系列5:XXL-job中blockingQueue的应用 …...

Spark RDD、DataFrame和Dataset的区别和联系

一、三种数据介绍 是Spark中的三种不同的数据结构,它们都可以用于分布式数据处理,但是它们的实现方式和使用方法略有不同。 RDD(弹性分布式数据集) RDD是Spark最初的核心数据结构,它是一个分布式的、只读的、可容错的…...

代码随想录算法训练营第四十五天|139.单词拆分、背包问题总结

LeetCode 139. 单词拆分 题目链接:139. 单词拆分 - 力扣(LeetCode) 这道题使用完全背包来实现,我们首先考虑字符串是否可以由字符串列表组成,因此dp数组大小为n 1 ,其意义是,在n个位置时是否能…...

深度学习卫星遥感图像检测与识别 -opencv python 目标检测 计算机竞赛

文章目录 0 前言1 课题背景2 实现效果3 Yolov5算法4 数据处理和训练5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **深度学习卫星遥感图像检测与识别 ** 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐…...

wxWidgets 3.2.4发布 —— 发布于2023年11月11日

稳定的3.2系列中的另一个版本现在可以在GitHub上获得。您可以在那里找到包含库源代码和文档的归档文件,以及所选Windows编译器(如Microsoft Visual C、MinGW-w64和TDM-GCC)的二进制文件。您还可以阅读此版本的更新文档,特别是&…...

PyQt6运行QTDesigner生成的ui文件程序

2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计18条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~、第2讲 PyQt6库和工具库Q…...

基于mediapipe的人手21点姿态检测模型—CPU上检测速度惊人

前期的文章,我们介绍了MediaPipe对象检测与对象分类任务,也分享了MediaPipe的人手手势识别。在进行人手手势识别前,MediaPipe首先需要进行人手的检测与人手坐标点的检测,经过以上的检测后,才能把人手的坐标点与手势结合起来,进行相关的手势识别。 MediaPipe人手坐标点检测…...

系统架构设计: 21 论敏捷软件开发方法及其应用

论敏捷软件开发方法及其应用 请围绕“敏捷软件开发方法及其应用”论题,依次从以下三个方面进行论述。 ①简述你所参与开发的运用了敏捷技术的项目,以及你所担任的工作; ②分析并讨论敏捷<...

【深度学习】脸部修复,CodeFormer,论文,实战

代码&#xff1a; https://github.com/sczhou/CodeFormer https://huggingface.co/spaces/sczhou/CodeFormer 论文&#xff1a;https://arxiv.org/abs/2206.11253 Towards Robust Blind Face Restoration with Codebook Lookup Transformer 文章目录 论文摘要1 引言2 相关工…...

从UVM1.1迁移到1.2,我踩过的那些坑和自动化脚本救星

从UVM1.1到1.2迁移实战&#xff1a;避坑指南与自动化脚本深度解析 当验证工程师面对一个庞大的、基于UVM1.1的验证环境时&#xff0c;版本升级往往意味着无数个不眠之夜。UVM1.2带来的不仅是新特性&#xff0c;更是一系列需要谨慎处理的兼容性问题。本文将分享我在多个项目中积…...

2026届必备的五大降AI率网站推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 有一类免费的 AI 论文工具&#xff0c;这些为学术写作起到了提供高效解决方案作用。这类系统…...

浙江大学毕业论文LaTeX模板:3步告别格式烦恼,专注学术研究

浙江大学毕业论文LaTeX模板&#xff1a;3步告别格式烦恼&#xff0c;专注学术研究 【免费下载链接】zjuthesis Zhejiang University Graduation Thesis LaTeX Template 项目地址: https://gitcode.com/gh_mirrors/zj/zjuthesis 还在为毕业论文的格式要求头疼吗&#xff…...

MATLAB Simulink在车辆运动学仿真中的应用:实时位置与车身姿态的模拟

MATLAB simulink 车辆运动学仿真 实时位置 车身姿态最近在折腾车辆运动学仿真的时候发现&#xff0c;用Simulink搞这事比纯代码撸矩阵有意思多了。特别是实时看着小车在地图上蛇形走位&#xff0c;还能看它扭屁股的姿态&#xff0c;这成就感可比看Excel表格强太多了。先整点硬货…...

KEA128与S32K144的LIN主从机实战:从硬件对接到波形调试全记录

KEA128与S32K144的LIN总线异构通信实战&#xff1a;从硬件设计到波形分析的完整指南 在汽车电子系统中&#xff0c;LIN总线作为CAN网络的补充&#xff0c;广泛应用于车门、座椅、空调等低复杂度控制场景。本文将基于NXP KEA128和S32K144两款不同架构的MCU&#xff0c;构建一个完…...

网络小白也能懂:用H3C S5500-SI的LLDP功能,5分钟搞定交换机邻居发现与链路监控

网络拓扑可视化实战&#xff1a;H3C S5500-SI交换机LLDP功能深度解析 走进机房&#xff0c;面对错综复杂的网线和成排的交换机设备&#xff0c;你是否经常困惑某根网线究竟连接到哪里&#xff1f;传统的手工记录方式不仅效率低下&#xff0c;还容易出错。这就是LLDP&#xff08…...

PyUSB社区生态:如何参与开源贡献并获得技术支持

PyUSB社区生态&#xff1a;如何参与开源贡献并获得技术支持 【免费下载链接】pyusb Easy USB access for Python 项目地址: https://gitcode.com/gh_mirrors/py/pyusb PyUSB作为一款简化Python USB设备访问的开源库&#xff0c;凭借其跨平台特性和易用性&#xff0c;已成…...

【GraalVM静态镜像内存优化终极指南】:20年JVM专家亲授5大内存泄漏陷阱与3步零GC启动法

第一章&#xff1a;GraalVM静态镜像内存优化全景认知GraalVM 静态原生镜像&#xff08;Native Image&#xff09;通过提前编译&#xff08;AOT&#xff09;将 Java 应用编译为独立可执行文件&#xff0c;显著降低启动延迟与运行时内存开销。然而&#xff0c;静态镜像的内存行为…...

Topit:macOS窗口置顶终极指南,彻底释放多任务处理潜能

Topit&#xff1a;macOS窗口置顶终极指南&#xff0c;彻底释放多任务处理潜能 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 在macOS工作环境中&#xff0c;你…...

如何用Autolabel自动化数据标注提升25-100倍效率?

如何用Autolabel自动化数据标注提升25-100倍效率&#xff1f; 【免费下载链接】autolabel Label, clean and enrich text datasets with LLMs. 项目地址: https://gitcode.com/gh_mirrors/au/autolabel 在人工智能时代&#xff0c;高质量标注数据是模型成功的核心要素。…...