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

登录拦截器

文章目录

  • 前言
  • 一、interceptor
    • 1.interceptor 包下新建loginInterceptor.java
    • 2.config 包下新建 AdminWebConfig.java
    • 3.返回登录页面接收提示信息


前言

本篇主要介绍spring框架里提供的 HandlerInterceptor 拦截器做登录拦截。


一、interceptor

1.interceptor 包下新建loginInterceptor.java

继承spring框架里的 HandlerInterceptor 接口,提供了三个方法做拦截,这里使用了第一个方法 preHandle 。

/*
登录检查
1.配置好拦截器需要拦截哪些请求
2.将这些配置放在容器中
*/
@Slf4j
public class LoginInterceptor implements HandlerInterceptor {// 目标方法执行之前@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 打印日志:拦截的请求路径String requestURL = request.getRequestURI();log.info("拦截的请求路径是{}",requestURL);// 登录逻辑检查HttpSession session = request.getSession();Object loginUsername = session.getAttribute("username");if (loginUsername != null){return true;//session里有loginUsername信息放行}//否则拦截,添加返回登录页面的错误信息,重定向到登录页session.setAttribute("msg","请先登录");//前端{session.msg}接收response.sendRedirect("/user/login");
//        request.setAttribute("msg","请先登录");
//        request.getRequestDispatcher("/user/login").forward(request,response);return false;}// 目标方法执行完成之后@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {}
}

2.config 包下新建 AdminWebConfig.java

配置:继承spring框架里的 HandlerInterceptor 接口,使用提供的 addInterceptors 方法,注册上面写的拦截器 LoginInterceptor 。
拦截所有的请求,放行登录相关请求和一些静态资源请求。

@Configuration
public class AdminWebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**")//默认拦截所有请求,包括静态资源// 改成/*放过了静态资源,教学视频里的弹幕提示,尝试有效但存疑。/*表示一层路径(多个字符),/**表示n层目录。不用这个方法最好。// .addPathPatterns("/*").excludePathPatterns("/user/login","/user/toLogin","/validateCode","/user/reg","/user/checkUsername","/user/toReg","/user/**");//放行这些请求(去登录页、登录验证、验证码资源获取)"/user/**"表示放过静态资源static文件夹下的user文件夹所有静态资源}
}

3.返回登录页面接收提示信息

前端登录的提示信息有两种,一个通过 session 的 session.setAttribute() 传值, $ {session.msg} 接收;一种通过 model.addAttribute() 传值,$ {msg} 接收。
记得登录信息验证时,把拦截器用 session 传的提示信息清空。

<span th:text="${msg}" style="color: red"></span>
<span th:text="${session.msg}" style="color: red"></span>

相关文章:

登录拦截器

文章目录前言一、interceptor1.interceptor 包下新建loginInterceptor.java2.config 包下新建 AdminWebConfig.java3.返回登录页面接收提示信息前言 本篇主要介绍spring框架里提供的 HandlerInterceptor 拦截器做登录拦截。 一、interceptor 1.interceptor 包下新建loginInte…...

STM32 - HAL库UART串口

1.串口初始化配置/******************************************************************************* Function: BSP_UART_Init Description: 串口初始化 Input: instance 串口号baudRate: 波特率 Output: 无 Return: 无 ************************************************…...

Vue3 的状态管理库(Pinia)

目录前言&#xff1a;一、什么是 Pinai二、安装与使用pinia三、什么是 store四、state1. 定义 state2. 组件中访问 state五、Getters1. 定义 Getters2. 在组件中使用 Getters六、Actions1. 定义Actions2. 组件中访问 Actions总结&#xff1a;前言&#xff1a; 在编写vue里的项目…...

信息系统项目管理师知识点汇总(2023最新)

信息系统项目管理师 信息系统项目管理师简介如何应对考试考试细节与学习 十大管理 十大管理四十七过程 信息化和信息系统 项目管理基础 项目整体管理 项目范围管理 项目进度管理 项目成本管理 项目质量管理 项目人力资源管理 项目沟通管理 项目干系人管理 项目风险…...

标题标题标题

图床&#xff08;Typora uPic/PicGo 七牛云&#xff09; 图床&#xff08;Typora uPic/PicGo 七牛云&#xff09; 笔者平时使用 Typora 编写 markdown 文档&#xff0c;文档中常常会放置图片&#xff0c;如果文档不需要分享的话&#xff0c;其实讲图片存放在本地就可以了…...

OKR学习总结二

总结 绩效管理不是进行事后管理&#xff0c;而是参与整个过程并进行实时把控。 我们将受益目标分为两个子目标&#xff1a; 新增收入和重复收入。第一部分目标由市场营销部承担&#xff0c;第二个目标则由产品部承担。 简而言之&#xff0c;文化是一系列价值观和信仰的体现&…...

MAC中docker搭建fastdfs

1:首先搭建Docker2:通过Docker搭建fastdfs&#xff08;1&#xff09;查找镜像打开终端通命令查找fastdfs的镜像docker search fastdfs&#xff08;二&#xff09;拉取镜像在找到合适的镜像后执行命令:docker pull delron/fastdfs&#xff08;三&#xff09; 创建storage和track…...

JavaScript 变量

变量是用于存储信息的"容器"。实例var x5;var y6;var zxy;尝试一下 就像代数那样x5y6zxy在代数中&#xff0c;我们使用字母&#xff08;比如 x&#xff09;来保存值&#xff08;比如 5&#xff09;。通过上面的表达式 zxy&#xff0c;我们能够计算出 z 的值为 11。在…...

【前端验证】环境仿真中对于寄存器配置的随机策略讨论

前言 本篇文章旨在讨论环境仿真中对于寄存器配置的随机。 寄存器域的随机性 使用ralgen生成的寄存器本身是rand属性的,也就是说其自身是可以通过约束随机的方式在用例中进行随机性配置的,比如下面这个寄存器: class ral_reg_REG_PRJ_sys_cfg_base_config extends uvm_re…...

Servlet如何读取Web资源文件?【操作演示】

在实际开发中&#xff0c;有时候可能会需要读取Web应用中的一些资源文件&#xff0c;比如配置文件&#xff0c;图片等。为此&#xff0c;在ServletContext接口中定义了一些读取Web资源的方法&#xff0c;这些方法是依靠Servlet容器来实现的。Servlet容器根据资源文件相对于Web应…...

[ vulhub漏洞复现篇 ] Drupal 远程代码执行漏洞(CVE-2019-6339)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…...

flex-shrink和felx-grow

本文就是简单的介绍下flex-shrink和felx-grow的作用和计算方式吧&#xff1b;关于这个介绍也是很多&#xff1b;flex-shrinkflex-shrink是flex布局中的一种方式&#xff0c;简单来说&#xff0c;就是当布局大小小于容器大小的时候&#xff0c;使用flex-shrink能够按照一定的比例…...

将HTTP接口配置成HTTPS

一、使用Java的keytool.exe程序生成本机的TLS许可找到Java的jdk目录进入bin默认安装路径C:\Program Files\Java\jdk1.8.0_91\bin 进入命令面板&#xff0c;在bin的路径栏中输入cmd敲击回车即可使用keytoolkeytool -genkeypair -alias tomcat_https -keypass 123456 -keyalg RSA…...

YOLOV5报错解决办法

&#x1f308;&#x1f308;&#x1f604;&#x1f604; 欢迎来到茶色岛独家岛屿&#xff0c;本期将为大家揭晓YOLOV5报错解决办法&#xff0c;做好准备了么&#xff0c;那么开始吧。 &#x1f332;&#x1f332;&#x1f434;&#x1f434; 1.在pycharm终端使用pip install…...

java final关键字 详解

概述&#xff1a;作用&#xff1a;细节&#xff1a;演示&#xff1a;总结&#xff1a;一、概述 : final [ˈ faɪnl]&#xff0c;最终的&#xff0c;最后的&#xff0c;决定性的&#xff0c;不可改变的。final作为Java中的一个关键字可以用来修饰类&#xff0c;方法&#xff0c…...

Vbs_To_Exe制作简易exe程序

文章目录一、准备vbs脚本文件二、工具打包exe一、准备vbs脚本文件 新建一个文本文档 复制下面代码到文本文档中 Set speech CreateObject("SAPI.SpVoice") speech.Speak "l love you!"修改文本后缀为.vbs。编码选择ANSI&#xff08;解决中文乱码问题&am…...

AI制药 - TMScore(US-align)、RMSD、Sequence 源码

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/129125467 参考文档:Nature Methods | 蛋白、RNA、DNA及其复合物结构的比对算法US-align 官网地址:https://zhanggroup.org/US-align/ TMScore TMScore,…...

关于个人的经历

简介 我是一个意外接触微机技术的五年专生(前三年寄读一个中专&#xff0c;后两年回大专学校)&#xff0c;2020年中考失利&#xff0c;以高中线上30分去了现在所在五年专&#xff0c;专业是软件&#xff0c;目前个人已过程序员&#xff0c;网管&#xff0c;信息处理员&#xff…...

设计在单链表中删除值相同的多余结点的算法(包括指针的引用的知识点)

1 C中指针与引用的区别 引用相当于起别名int m; int &n m;n 相当于 m 的别名&#xff08;绰号&#xff09;&#xff0c;对 n 的任何操作就是对m的操作。 所以 n 既不是m的拷贝&#xff0c;也不是指向 m 的指针&#xff0c;其实n就是 m 它自己。 引用的注意事项&#xff…...

100份简历才找一个合适的,2023,软件测试岗位饱和了吗?

各大互联网公司的接连裁员&#xff0c;政策限制的行业接连消失&#xff0c;让今年的求职雪上加霜&#xff0c;想躺平却没有资本&#xff0c;还有人说软件测试岗位饱和了&#xff0c;对此很多求职者深信不疑&#xff0c;因为投出去的简历回复的越来越少了。 另一面企业招人真的…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...