springboot开发登录拦截器

  • 开发登录拦截器LoginInterceptor

    package com.gen.genonlineclassroom.interceptor;import cn.hutool.core.util.StrUtil;
    import com.gen.genonlineclassroom.entity.User;
    import com.gen.genonlineclassroom.enums.ResponseCodeEnum;
    import com.gen.genonlineclassroom.exception.CustomException;
    import com.gen.genonlineclassroom.utils.JwtUtil;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;/*** 登录拦截器** @author Gen*/
    @Slf4j
    public class LoginInterceptor implements HandlerInterceptor {/*** 进入controller之前拦截** @param request* @param response* @param handler* @return* @throws Exception*/@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {try {// 获取tokenString token = request.getHeader("token");if (token == null) {token = request.getParameter("token");}if (StrUtil.isNotBlank(token)) {// 校验tokenUser user = JwtUtil.checkToken(token);if (user == null) {// 登录失败,token无效throw new CustomException(ResponseCodeEnum.LOGIN_FAIL.getCode(), ResponseCodeEnum.LOGIN_FAIL.getMsg());}request.setAttribute("user", user);return true;}} catch (Exception e) {log.error("登录拦截器异常==》异常:{}", e);}throw new CustomException(ResponseCodeEnum.LOGIN_FAIL.getCode(), ResponseCodeEnum.LOGIN_FAIL.getMsg());}
    }
    
  • LoginInterceptor拦截器注册和路径校验配置

    package com.gen.genonlineclassroom.config;import com.gen.genonlineclassroom.interceptor.LoginInterceptor;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/*** 拦截器配置*/
    @Configuration
    public class InterceptorConfig implements WebMvcConfigurer {@Beanpublic LoginInterceptor loginInterceptor() {return new LoginInterceptor();}@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(loginInterceptor())// 拦截全部路径.addPathPatterns("/**")// 不拦截路径.excludePathPatterns("/test");WebMvcConfigurer.super.addInterceptors(registry);}
    }
    

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

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

相关文章

AI数字人虚拟主播,跟传统主播相比有哪些优势,究竟谁更胜一筹?

在今年,AI人工智能技术得到了快速发展,AI数字人开始大面积进入我们的生活,我们经常可以在各大直播间刷到AI数字人虚拟主播。 这些主播光从表面上来看,完全跟真人一模一样,一样的容貌、一样的身形、一样的声音&#xf…

133. 克隆图

133. 克隆图 题目-中等难度示例1. bfs 题目-中等难度 给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。 图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。…

CocosCreator3.8研究笔记(十五)CocosCreator 资源管理Asset Bundle

在资源管理模块中有一个很重要的功能: Asset Bundle,那什么是Asset Bundle ?有什么作用?怎么使用 Asset Bundle呢 ? 一、什么是Asset Bundle ?有什么作用? 在日常游戏开发过程中,为了…

公转私到底怎么转才安全?通过这两种方法合理节税!

《梅梅谈税》专注于企业税务筹划!助力企业合理、合规、合法进行节税税收筹划! 公司本就是一个盈利的组织形式 ,成立公司就是为了赚钱,公司赚了钱,就要转至私人账户自由支配,怎么合理从公司拿钱出来这也让很…

管理者,怎样招到合适的人?

导语: 企业的成功离不开优秀的人才,而招聘是引入人才的关键环节。本文将分享一些招聘合适人才的秘诀,帮助您提高招聘的效果。 明确岗位需求和招聘目标: 在开始招聘之前,确保您清楚地了解所需岗位的具体职责和技能要求。制定一份清晰的招聘目…

Python 中的 sscanf() 函数

文章目录 Python 中的 sscanf() 功能使用 re 库中的正则表达式使用Neuron库 函数 sscanf() 来自编程语言 C 和 C。 虽然 Python 没有为此方法提供任何完全等效的方法或库,但可能有其他方法来执行此功能。 这篇 Python 文章将使您更好地理解 sscanf() 必须提供什么以…

几个国内可用的强大的GPT工具

前言: 人工智能发布至今,过去了九个多月,已经成为了我们不管是工作还是生活中一个重要的辅助工具,大大提升了效率,作为一个人工智能的自然语言处理工具,它给各大行业的提供了一个巨大的生产工具&#xff0c…

玩转Mysql系列 - 第21篇:什么是索引?

这是Mysql系列第21篇。 本文开始连续3篇详解mysql索引: 第1篇来说说什么是索引? 第2篇详解Mysql中索引的原理 第3篇结合索引详解关键字explain 本文为索引第一篇:我们来了解一下什么是索引? 路人在搞计算机之前,…

002-第一代硬件系统架构确立及产品选型

第一代硬件系统架构确立及产品选型 文章目录 第一代硬件系统架构确立及产品选型项目介绍摘要硬件架构硬件结构选型及设计单片机选型上位机选型扯点别的 关键字: Qt、 Qml、 信号采集机、 数据处理、 上位机 项目介绍 欢迎来到我们的 QML & C 项目&#xff…

从零学习开发一个RISC-V操作系统(一)丨计算机组成原理相关知识与RISC-V指令集简介

本篇文章的内容 一、计算机组成原理的相关知识1.1 计算机的硬件组成1.2 程序的存储与执行1.3 程序语言的设计和进化1.4 存储设备的层次结构1.5 操作系统 二、RISC-V的指令集ISA简介2.1 什么是ISA2.2 复杂指令集(CISC)和精简指令集(RISC&#…

五个很实用的IDEA使用技巧

日常开发中,相信广大 Java 开发者都使用过 IntelliJ IDEA 作为开发工具,IntelliJ IDEA 是一款优秀的 Java 集成开发环境,它提供了许多强大的功能和快捷键,可以帮助开发者提高编码效率和质量。除了一些常见的技巧,如自动…

C++ explicit的作用

注:内容参考学习 Leetcode 上的《C面试突破》 一、作用 用来声明类构造函数是显示调用的,而非隐式调用,可以阻止调用构造函数时进行隐式转换和赋值初始化。注意:只可用于修饰单参构造函数,因为无参构造函数和多参构…

delphi Variant 与 流(TStream)相互转换

Variant 与 流(TStream)相互转换 代码 Variant转TStream procedure VariantToStream(Stream: TStream; const Value: Variant); varp: Pointer; beginif VarIsNull(Value) or VarIsEmpty(Value) thenExit;Stream.Size : VarArrayHighBound(Value, 1) …

【vue3页面展示代码】展示代码codemirror插件

技术版本: vue 3.2.40、codemirror 6.0.1、less 4.1.3、vue-codemirror 6.1.1、 codemirror/lang-vue 0.1.2、codemirror/theme-one-dark 6.1.2 效果图: 1.安装插件 yarn add codemirror vue-codemirror codemirror/lang-vue codemirror/theme-one-dar…

神经网络 03(参数初始化)

一、参数初始化 对于某一个神经元来说,需要初始化的参数有两类:一类是权重W,还有一类是偏置b,偏置b初始化为0即可。而权重W的初始化比较重要,我们着重来介绍常见的初始化方式。 (1)随机初始化 …

Prometheus、node_exporter、Grafana端口修改(端口占用)

服务器监控搭建完成后涉及默认端口修改,如下 node_exporter 端口修改 #修改启动服务 vi /usr/lib/systemd/system/node-exporter.service #增加 --web.listen-address:8002 [Unit] ​ DescriptionThis is prometheus node exporter ​ Afternode_exporter.service…

《PostgreSQL与NoSQL:合作与竞争的关系》

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: &#x1f4da…

山西电力市场日前价格预测【2023-09-21】

日前价格预测 预测说明: 如上图所示,预测明日(2023-09-21)山西电力市场全天平均日前电价为345.38元/MWh。其中,最高日前电价为408.38元/MWh,预计出现在19: 00。最低日前电价为246.41元/MWh,预计…

ew三层代理使用方法

1.获得目标网络内两台主机 A、B 的权限,情况描述如下: A 主机: 目标网络的边界主机,无公网 IP,无法访问特定资源。 B 主机: 目标网络内部主机,可访问特定资源,却无…

查看docker镜像是由哪些指令创建来的

–no-trunc 是不要省略。 docker history --no-trunc kevinchina/deeplearning:sd_base_cuda116clip7 > history.txtcp -aL ~/.cache/huggingface/hub/models–Salesforce–blip-image-captioning-large/snapshots/e33defe055114d86bec9c0705b71e590cfc0694c/* ~/.cache/hu…