基于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;
});

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/156661.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

家政保洁预约小程序app开发特点有哪些?

家政预约服务小程序APP开发的特点介绍; 1. 低成本:用户通过手机APP下单,省去了中介费用,降低了雇主的雇佣成本。 2. 高收入:家政服务人员通过手机APP接单,省去了中介费用,从而提高了服务人员的…

京东优惠券查询API接口接入方案,item_search_coupon - 京东优惠券查询接口演示

要接入京东优惠券查询API接口(item_search_coupon),您可以按照以下步骤进行操作: 注册并获取API密钥:首先,您需要在京东开放平台上注册并获取API密钥。这将为您提供唯一的标识符和密钥,用于访问…

图形编辑器开发:自定义光标管理

大家好,我是前端西瓜哥。 今天来讲讲如何在图形编辑器中使用自定义光标,并对光标其进行管理。 编辑器 github 地址: https://github.com/F-star/suika 线上体验: https://blog.fstars.wang/app/suika/ 自定义光标的意义是什么&am…

【python学习】基础篇-常用模块-subprocess模块:创建和管理子进程

在Python中,可以使用subprocess模块来创建和管理子进程。以下是一些常用的方法: subprocess.run()运行一个新的子进程,并等待其完成。可以传入命令和参数列表,还可以设置环境变量、工作目录等选项。返回一个CompletedProcess对象…

大学计算机毕业设计真的很难完成吗?(资源持续更新~~)

近几年毕业设计和毕业答辩的要求和难度不断提升,传统的毕业项目缺少创新和亮点,往往达不到毕业答辩的要求,于是培训教育机构专门针对各大院校毕业设计进行培训指导,衍生出很多届优秀学员的毕业项目。为了让广大同学都可以顺利通过…

实践小记——C#科学计数法格式化输出

文章速览 示例默认输出,不设置小数精度设置尾数部分的小数精度 总结参考文章 坚持记录实属不易,希望友善多金的码友能够随手点一个赞。 共同创建氛围更加良好的开发者社区! 谢谢~ 示例 默认输出,不设置小数精度 private void Fo…

PHP接收并处理请求中携带的xml格式的信息

企业微信以xml的形式给服务器发送通知。具体参考&#xff1a;企业微信文档——事件格式 dump(file_get_contents("php://input"));/***string(530) "<xml><ToUserName><![CDATA[ww55ca070cb9b7eb22]]></ToUserName><FromUserName>…

前端vite打包工具

文章目录 vite简介特点搭建步骤 vite简介特点 Vite是在推出Vue 3的时候开发的&#xff0c;目前仅支持Vue 3.x&#xff0c;这意味着与Vue 3不兼容的库也不能与Vite一起使用。持热更新&#xff0c;而且热更新的速度不会随着模块增多而变慢。在生产环境下使用Rollup打包。Vite 的…

苍穹外卖—解决前端时间属性显示问题

项目场景&#xff1a; 点击员工管理 出现显示时间属性问题 输入员工姓名为zhangsan 现实的时间属性是数组类型 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 例如&#xff1a;数据传输过程中数据不时出现丢失的情况&#xff0c;偶尔会丢失一部分数据 APP …

简单但好用:4种Selenium截图方法了解一下!

前言 我们执行UI自动化操作时&#xff0c;大多数时间都是不在现场的&#xff0c;出现错误时&#xff0c;没有办法第一时间查看到&#xff0c;这时我们可以通过截图当时出错的场景保存下来&#xff0c;后面进行查看报错的原因&#xff0c;Selenium中提供了几种截图的方法&#x…

wangEditor 富文本编辑

用于 Vue React | wangEditor 适用于vue2,3&#xff0c;react

vue2使用el-tag自定义菜单导航标签

需求&#xff1a;使用el-tag写个菜单导航栏&#xff0c;点击路由的时候就添加 功能&#xff1a; 设置鼠标横向滚动并且不展示滚动条添加关闭其他、关闭左侧、关闭右侧、全部关闭标签功能单个标签删除功能添加&#xff0c;固定标签不可删除右键点击展开操作菜单栏设置个默认固定…

excel自定义函数之汉字转为拼音及大写字母

使用场景&#xff1a;想把姓名转化为拼音格式&#xff0c;然后拼音转为大写字母 至于怎么在excel里面自定义函数&#xff0c;自行百度都有&#xff0c;这里简单截图看看。 步骤&#xff1a;文件》选项》自定义功能区》 打开编辑窗口 把下面这段代码粘贴就能实现汉字转化为拼音…

【无公网IP内网穿透】异地远程访问本地SQL Server数据库

目录 1.前言 2.本地安装和设置SQL Server 2.1 SQL Server下载 2.2 SQL Server本地连接测试 2.3 Cpolar内网穿透的下载和安装 2.3 Cpolar内网穿透的注册 3.本地网页发布 3.1 Cpolar云端设置 3.2 Cpolar本地设置 4.公网访问测试 5.结语 1.前言 数据库的重要性相信大家…

Proxifier是什么?如何用它测试代理ip对目标站的访问结果

Proxifier是一款用于Windows和macOS操作系统的网络工具&#xff0c;允许用户无需对每个应用程序进行单独的配置&#xff0c;就能通过代理服务器或防火墙进行网络连接&#xff0c;因而受到广泛欢迎。 Proxifier 功能强大而灵活&#xff0c;很多人对此一无所知&#xff0c;今天我…

【Python3】【力扣题】338. 比特位计数

【力扣题】题目描述&#xff1a; 题解&#xff1a;从0到n的整数&#xff0c;逐一统计二进制中1的个数&#xff0c;记录在一个新列表中。 【Python3】代码&#xff1a; 1、解题思路&#xff1a;Python函数。 知识点&#xff1a;bin(...)&#xff1a;转为二进制字符串&#xff…

阿里巴巴对裁员谣言报警

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 前两天王自如言论事件&#xff0c;格力选择了报警&#xff0c;称高管遭到姊妹集体侮辱诽谤。 而这两天&#xff0c;阿里巴巴也报警了&#xff0c;原因是网传阿里巴巴要裁员25000人。 咱不公关了…

【ArcGIS Pro二次开发】(77):ArcGIS Pro中图层的获取与解析

一、最简单的获取图层方式 通常情况下&#xff0c;如果要获取当前地图中的图层&#xff0c;可以用2种方法获取。 以下图为例&#xff1a; 一种是【map.Layers】属性获取&#xff0c;结果如下&#xff1a; 可以看出&#xff0c;这里只获取到了第一层级的图层&#xff0c;图层组…

Python数据结构基础教学,从零基础小白到实战大佬!

文章目录 前言 Python有那几种数据结构&#xff1f;1)列表&#xff08;list)1.1 什么是列表&#xff1f;1.2列表的增删改查 2&#xff09;字典&#xff08;Dictionary)2.1 什么是字典&#xff1f;2.2 字典的增删改查 3&#xff09;元组&#xff08;Tuple)4)集合&#xff08;Set…

Java学习之路 —— Java高级

文章目录 前言1. 单元测试2. 反射2.1 获取Class对象的三种方式2.2 获取类的构造器的方法2.3 获取类的成员变量2.4 获取类的成员方法2.5 反射的作用 3. 注解3.1 自定义注解3.2 注解的原理3.3 元注解3.4 注解的解析 4. 动态代理5. 总结 前言 终于走到新手村的末端了&#xff0c;…