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

SpringBoot实现登录拦截

如果我们不进行登录拦截的话,即使我们跳过登录页面直接去访问任意一个页面也能访问成功,那么登录功能就没有意义,同时也会存在安全问题,因为有些操作是要用户登录后才能执行的,如果用户没有登录,该接口就获取不了当前访问的用户也就不知道是哪个用户执行了该操作就会出错。所以我们要进行登录判断,如果没有登录则访问任意页面都跳转到登录页面。

代码实现

  1. 创建自定义过滤器LoginCheckFilter
  2. 在启动类上加入注解@ServletComponentScan,才会去扫描过滤器
  3. 完善过滤器的处理逻辑

具体实现:

使用过滤器或者拦截器,在过滤器或者拦截器中判断用户是否已经完成登录,如果没有登录则跳转到登录页面。如果登录了或者该请求不需要登录拦截器直接放行,交由具体的controller进行处理。
LoginCheckFilter

package com.zxy.filter;//urlPatterns配置拦截路径,这里表示拦截所有
@WebFilter(filterName="loginCheckFilter",urlPatterns = "/*")
@Slf4j
public class LoginCheckFilter implements Filter {//路径匹配器,支持通配符public static final AntPathMatcher PATH_MATCHER = new AntPathMatcher();@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) servletRequest;HttpServletResponse response = (HttpServletResponse) servletResponse;//1.获取本次请求的URIString requestURI = request.getRequestURI();//定义不需要处理的请求路径,下面的*只是字符串,并不是通配符,后面通过check判断时*号就视为通配符了String[] urls = new String[]{"/employee/login","/employee/logout","/backend/**","/front/**"};//2.判断本次请求是否需要处理boolean check = check(urls,requestURI);//3.如果不需要处理,直接放行if(check){filterChain.doFilter(request,response);return;}//4.如果需要处理,判断是否登录//登录状态,不需要处理,直接放行if(request.getSession().getAttribute("employee")!=null){filterChain.doFilter(request,response);return;}//5.如果未登录则返回未登录结果,通过输出流方式向客户端页面响应数据,因为我们返回的是void,所以不能return R.error("NOTLOGIN")response.getWriter().write(JSON.toJSONString(R.error("NOTLOGIN")));return;}public boolean check(String[] urls,String requestURI){for(String url:urls){boolean match = PATH_MATCHER.match(url,requestURI);if(match){return true;}}return false;}
}

相关文章:

SpringBoot实现登录拦截

如果我们不进行登录拦截的话,即使我们跳过登录页面直接去访问任意一个页面也能访问成功,那么登录功能就没有意义,同时也会存在安全问题,因为有些操作是要用户登录后才能执行的,如果用户没有登录,该接口就获…...

浅谈泛在电力物联网、能源互联网与虚拟电厂

导读:从能源互联网推进受阻,到泛在电力物联网名噪一时,到虚拟电厂再次走向火爆,能源领域亟需更进一步的数智化发展。如今,随着新型电力系统建设推进,虚拟电厂有望迎来快速发展。除了国网和南网公司下属的电…...

深度学习框架安装与配置指南:PyTorch和TensorFlow详细教程

如何安装和配置深度学习框架PyTorch和TensorFlow 为什么选择PyTorch和TensorFlow?PyTorchTensorFlow安装PyTorch 步骤1:安装Python步骤2:使用pip安装PyTorch 安装TensorFlow 步骤1:安装Python步骤2:使用pip安装TensorF…...

vue中属性执行顺序

vue中属性的执行顺序 在Vue 2中,组件的生命周期和数据绑定的执行顺序如下: data:首先,组件会调用 data 函数,该函数返回一个对象,该对象的属性和方法会被分配给组件的 $data。init:接下来&…...

【代码随想录】Day 50 动态规划11 (买卖股票Ⅲ、Ⅳ)

买卖股票Ⅲ https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/ 无语了。。。 写的很好就是怎么都过不了。。。 还是就用代码随想录的写法吧。。。 class Solution { public:int maxProfit(vector<int>& prices) {int n prices.size();vector&…...

PHP反序列化漏洞

一、序列化&#xff0c;反序列化 序列化&#xff1a;将php对象压缩并按照一定格式转换成字符串过程反序列化&#xff1a;从字符串转换回php对象的过程目的&#xff1a;为了方便php对象的传输和存储 seriallize() 传入参数为php对象&#xff0c;序列化成字符串 unseriali…...

容器编排学习(一)k8s集群管理

一 Kubernetes 1 概述 就在Docker容器技术被炒得热火朝天之时&#xff0c;大家发现&#xff0c;如果想要将Docker应用于具体的业务实现&#xff0c;是存在困难的一一编排、管理和调度等各个方面&#xff0c;都不容易。于是&#xff0c;人们迫切需要一套管理系统&#xff0…...

js去除字符串空格的几种方式

方法1&#xff1a;(最常用)全部去除掉空格 var str abc d e f g ; function trim(str) { var reg /[\t\r\f\n\s]*/g; if (typeof str string) { var trimStr str.replace(reg,); } console.lo…...

Spring 自带工具——URI 工具UriComponentsBuilder

UriComponentsBuilder 是 Spring Framework 提供的一个实用工具类&#xff0c;用于构建 URI&#xff08;Uniform Resource Identifier&#xff09;。URI 是用于标识和定位资源的字符串&#xff0c;例如 URL&#xff08;Uniform Resource Locator&#xff09;就是一种特殊的 URI…...

优化案例5:视图目标列改写优化

优化案例5&#xff1a;视图目标列改写优化 1. 问题描述2. 分析过程2.1 目标SQL2.2 解决思路1&#xff09;效率低的执行计划2&#xff09;视图过滤性3&#xff09;查看已有索引定义 2.3 视图改写2.4 增添复合索引 3. 优化总结 DM技术交流QQ群&#xff1a;940124259 1. 问题描述…...

Origin绘制彩色光谱图

成果图 1、双击线条打开如下窗口 2、选择“图案”-》颜色-》按点-》映射-》Wavelength 3、选择颜色映射 4、单击填充-》选择加载调色板-》Rainbow-》确定 5、单击级别&#xff0c;设置成从370到780&#xff0c;右侧增量选择2&#xff08;越小&#xff0c;颜色渐变越细腻&am…...

项目复盘:从实践中学习

引言 在我们的工作生涯中&#xff0c;每一个项目都是一次学习的机会。项目复盘是对已完成项目的全面评估&#xff0c;旨在理解我们做得好的地方&#xff0c;以及需要改进的地方。这篇文章将分享我们如何进行项目复盘&#xff0c;以及我们从中学到了什么。 项目背景 在我们开…...

机器学习和数据挖掘02-Gaussian Naive Bayes

概念 贝叶斯定理&#xff1a; 贝叶斯定理是概率中的基本定理&#xff0c;描述了如何根据更多证据或信息更新假设的概率。在分类的上下文中&#xff0c;它用于计算给定特征集的类别的后验概率。 特征独立性假设&#xff1a; 高斯朴素贝叶斯中的“朴素”假设是&#xff0c;给定…...

【面试题精讲】Java Stream排序的实现方式

首发博客地址 系列文章地址 如何使用Java Stream进行排序 在Java中&#xff0c;使用Stream进行排序可以通过sorted()方法来实现。sorted()方法用于对Stream中的元素进行排序操作。具体实现如下&#xff1a; 对基本类型元素的排序&#xff1a; 使用sorted()方法对Stream进行排序…...

浅谈Spring

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器&#xff08;框架&#xff09;。 一、什么是IOC&#xff1f; IoC Inversion of Control 翻译成中⽂是“控制反转”的意思&#xff0c;也就是说 Spring 是⼀个“控制反转”的容器。 1.1控制反转推导 这个控制反转怎…...

Java 复习笔记 - 面向对象进阶篇

文章目录 一&#xff0c;Static&#xff08;一&#xff09;Static的概述&#xff08;二&#xff09;静态变量&#xff08;三&#xff09;静态方法&#xff08;四&#xff09;工具类&#xff08;五&#xff09;static的注意事项 二&#xff0c;继承&#xff08;一&#xff09;继…...

微信小程序中识别html标签的方法

rich-text组件 在微信小程序中有一个组件rich-text可以识别文本节点或是元素节点 具体入下: //需要识别的数据放在data中,然后放在nodes属性中即可 <rich-text nodes"{{data}}"></rich-text>详情可以参考官方文档:https://developers.weixin.qq.com/mi…...

02_常见网络层协议的头结构

1.ARP报文的报文结构 ARP首部的5个字段的含义&#xff1a; 硬件类型&#xff1a;值为1表示以太网MAC地址。 协议类型&#xff1a;表示要映射的协议地址类型&#xff0c;0x0800 表示映射为IP地址。 硬件地址长度&#xff1a;在以太网ARP的请求和应答中都是6&#xff0c;表示M…...

ChatGLM学习

GLM paper&#xff1a;https://arxiv.org/pdf/2103.10360.pdfchatglm 130B&#xff1a;https://arxiv.org/pdf/2210.02414.pdf 前置知识补充 双流自注意力 Two-stream self-attention mechanism&#xff08;双流自注意机制&#xff09;是一种用于自然语言处理任务的注意力机制…...

Flink之Watermark

1.乱序问题 流处理从事件产生&#xff0c;到流经source&#xff0c;再到operator&#xff0c;中间是有一个过程和时间的&#xff0c;虽然大部分情况下&#xff0c;流到operator的数据都是按照事件产生的时间顺序来的&#xff0c;但是也不排除由于网络、分布式等原因&#xff0…...

二轮平衡小车3:PID速度环

使用芯片&#xff1a;STM32 F103 C8T6 今日继续我的二路平衡小车开发之路&#xff0c;今日编写的是二轮平衡小车的PID速度环&#xff0c;我准备了纸飞机串口助手软件来辅助测试调节PID。 本文主要贴代码&#xff0c;之前的文章都有原理&#xff0c;代码中相应初始化驱动部分也…...

C语言之练习题

欢迎来到我的世界 希望这篇文章对你有所帮助&#xff0c;有不足的地方还请指正&#xff0c;大家一起学习交流 ! 目录 前言编程题第一题&#xff1a;珠玑妙算第二题&#xff1a;寻找奇数第三题&#xff1a;寻找峰值第四题&#xff1a;数对 总结 前言 这是暑假题目的收尾文章&am…...

没钱,没人,没经验?传统制造型企业如何用无代码实现转型

2023年&#xff0c;国家市场监督管理总局发布了三项重要标准&#xff0c;包括《工业互联网平台选型要求》、《工业互联网平台微服务参考框架》和《工业互联网平台开放应用编程接口功能要求》。这些标准的发布对于完善工业互联网平台标准体系&#xff0c;提升多样化工业互联网平…...

CentOS ARM 部署 kubernetes v1.24.6

1.背景 之前安装的kubernetes版本为v1.19.0 树莓派使用(CentOS7.9 armv71 Kubernetes1.19.0), 由于版本过低&#xff0c;一些HPA相关的功能支持不是特别好&#xff0c;因此需要将版本升级&#xff0c;本次会将版本升级为v1.24.6. 2. 如何upgrade 2.1. 优雅升级 kubeadm自带…...

LeetCode 725. Split Linked List in Parts【链表】中等

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…...

云计算中的负载均衡技术,确保资源的平衡分配

文章目录 1. 硬件负载均衡器2. 软件负载均衡器3. DNS负载均衡4. 内容分发网络&#xff08;CDN&#xff09; &#x1f388;个人主页&#xff1a;程序员 小侯 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 ✨收录专栏&#xff1a;云计算 ✨文章内…...

探索 SOCKS5 代理在跨境电商中的网络安全应用

随着全球化的发展&#xff0c;跨境电商成为了商业界的一颗新星&#xff0c;为企业提供了无限的发展机遇。然而&#xff0c;随之而来的是网络安全的挑战&#xff0c;特别是在处理国际网络流量时。在这篇文章中&#xff0c;我们将探讨如何利用 SOCKS5 代理和代理 IP 技术来加强跨…...

全网独家:编译CentOS6.10系统的openssl-1.1.1多版本并存的rpm安装包

CentOS6.10系统原生的openssl版本太老&#xff0c;1.0.1e&#xff0c;不能满足一些新版本应用软件的要求&#xff0c;但是它又被wget、mysql-libs、python-2.6.6、yum等一众系统包所依赖&#xff0c;不能再做升级。故需考虑在不影响系统原生openssl的情况下&#xff0c;安装较新…...

【go】异步任务解决方案Asynq实战

文章目录 一.Asynq介绍二.所需工具三.代码示例四.Reference 一.Asynq介绍 Asynq 是一个 Go 库&#xff0c;一个高效的分布式任务队列。 Asynq 工作原理&#xff1a; 客户端&#xff08;生产者&#xff09;将任务放入队列服务器&#xff08;消费者&#xff09;从队列中拉出任…...

掌握 Android 自动化测试框架 UiAutomator UiAutomator2

掌握 Android 自动化测试框架 UiAutomator & UiAutomator2 一、UiAutomator 简介二、UiAutomator2 的诞生三、UiAutomator2 的应用实践总结你是否曾经在进行 Android 应用开发时,对于如何进行全面、有效的自动化测试感到困惑?你是否想要更高效地进行 UI 测试,而不是一遍…...

切图做网站/二次感染即将大爆发

传送门 题意&#xff1a;有个房间&#xff0c;房间的值用四面的门加起来的值表示&#xff0c;非常巧妙&#xff0c;西门用1表示&#xff0c;北门用2表示&#xff0c;东门用4表示&#xff0c;南门用8表示&#xff0c;最后判断是否连通的方法使用&&#xff0c;非常巧妙。 题…...

成都网站建设scwbo/陕西网站设计

前&#xff1a; New Relic的上市使得IT和资本界开始重新重视APM&#xff0c;当然跟传统APM相比&#xff0c;New Relic还是有相当的创新&#xff0c;另外还有一点是目前的创业潮导致的企业级需求增大。 In recent years, IT projects seem to have stopped asking “which APM s…...

网站建设制作软件/搜索风云榜

对于想要打造爆款朋友圈的朋友来说要么就是想靠朋友圈引流要么就是想直接在微信变现&#xff0c;但不论如何首先你需要有自己专业的知识或者有清晰的目标 一、要专业&#xff0c;可以多发些案例反馈&#xff0c;大咖背书&#xff0c;互动或者认证&#xff0c;增加你的可信度&am…...

网站 数据报表如何做/优化搜索关键词

题目链接 题目大意&#xff1a; 每次可以交换相邻的两个字母&#xff0c;问最少多少步可以把该字符串翻转。 方法一&#xff1a; 小技巧&#xff1a;一个数列的逆序对数是其通过相邻交换恢复为自然序列的最小交换次数 所以将逆序字符串从小到大编号&#xff0c;并将编号对应到…...

做网站的最终目的/建立一个网站需要多少钱

JVM参数-XX:PrintGCDetails 在发生垃圾收集行为时打印内存回收日志&#xff0c;并且在进程退出的时候输出当前的内存各区域分配情况。 Minor GC VS Full GC 新生代GC&#xff08;Minor GC&#xff09;&#xff1a;发生在新生代的垃圾收集动作&#xff0c;Java对象大多朝生夕…...

字体网站/云南省最新疫情情况

经过查阅资料和自己的理解整理出来的&#xff0c;欢迎大家指教。Awake和Start对比awake比start先执行。当有多个类的时候&#xff0c;所有类的awake执行完了才会执行start。awake里面一般放初始化的属性值&#xff0c;获取组件等。start里面可以处理一些只执行一次的功能。比如…...