Spring Boot Vue 毕设系统讲解 3

目录

项目配置类

项目中配置的相关代码

spring Boot 拦截器相关知识

一、基于URL实现的拦截器:

二、基于注解的拦截器

三、把拦截器添加到配置中,相当于SpringMVC时的配置文件干的事儿:

项目配置类

项目中配置的相关代码

首先定义项目认证授权拦截器   AuthorizationInterceptor 把这个类注册为 bean  使用的是 @Bean注解

其次是重写 addInterceptors方法 将然后将注册的认证授权bean 添加到拦截器的链条当中,设置是所有请求都要过拦截器,出了static下面的静态资源不拦截

然后是重写 addResourceHandlers  这里是对项目的静态资源做定向解析,addResourceHandlers是请求路径.addResourceLocations 是资源的路径

spring Boot 拦截器相关知识

其实spring boot拦截器的配置方式和springMVC差不多,只有一些小的改变需要注意下就ok了。

下面主要介绍两种常用的拦截器:

一、基于URL实现的拦截器:
public class LoginInterceptor extends HandlerInterceptorAdapter{  @Override  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  String path = request.getServletPath();  if (path.matches(Const.NO_INTERCEPTOR_PATH)) {  //不需要的拦截直接过  return true;  } else {  // 这写你拦截需要干的事儿,比如取缓存,SESSION,权限判断等  System.out.println("====================================");  return true;  }  }  
} 


关键代码:path.matches(Const.NO_INTERCEPTOR_PATH 就是基于正则匹配的url。

public class Const {  public static final String SUCCESS = "SUCCESS";  public static final String ERROR = "ERROR";  public static final String FIALL = "FIALL";  /**********************对象和个体****************************/  public static final String SESSION_USER = "loginedAgent"; // 用户对象  public static final String SESSION_LOGINID = "sessionLoginID"; // 登录ID  public static final String SESSION_USERID = "sessionUserID"; // 当前用户对象ID编号  public static final String SESSION_USERNAME = "sessionUserName"; // 当前用户对象ID编号  public static final Integer PAGE = 10; // 默认分页数  public static final String SESSION_URL = "sessionUrl"; // 被记录的url  public static final String SESSION_SECURITY_CODE = "sessionVerifyCode"; // 登录页验证码 // 时间 缓存时间  public static final int TIMEOUT = 1800;// 秒  public static final String ON_LOGIN = "/logout.htm";  public static final String LOGIN_OUT = "/toLogout";  // 不验证URL anon:不验证/authc:受控制的  public static final String NO_INTERCEPTOR_PATH =".*/((.css)|(.js)|(images)|(login)|(anon)).*";  
} 

二、基于注解的拦截器

①创建注解:

/**  * 在需要登录验证的Controller的方法上使用此注解  */  
@Target({ElementType.METHOD})// 可用在方法名上  
@Retention(RetentionPolicy.RUNTIME)// 运行时有效  
public @interface LoginRequired {   
} 


②创建拦截器:

public class AuthorityInterceptor extends HandlerInterceptorAdapter{  @Override  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  // 如果不是映射到方法直接通过  if (!(handler instanceof HandlerMethod)) {  return true;  }  // ①:START 方法注解级拦截器  HandlerMethod handlerMethod = (HandlerMethod) handler;  Method method = handlerMethod.getMethod();  // 判断接口是否需要登录  LoginRequired methodmethodAnnotation = method.getAnnotation(LoginRequired.class);  // 有 @LoginRequired 注解,需要认证  if (methodAnnotation != null) {  // 这写你拦截需要干的事儿,比如取缓存,SESSION,权限判断等  System.out.println("====================================");  return true;  }  return true;  }  
} 
三、把拦截器添加到配置中,相当于SpringMVC时的配置文件干的事儿:
/**  * 和springmvc的webmvc拦截配置一样  * @author BIANP  */  
@Configuration  
public class WebConfigurer implements WebMvcConfigurer {  @Override  public void addInterceptors(InterceptorRegistry registry) {  // 拦截所有请求,通过判断是否有 @LoginRequired 注解 决定是否需要登录  registry.addInterceptor(LoginInterceptor()).addPathPatterns("/**");  registry.addInterceptor(AuthorityInterceptor()).addPathPatterns("/**");  }  @Bean  public LoginInterceptor LoginInterceptor() {  return new LoginInterceptor();  }  @Bean  public AuthorityInterceptor AuthorityInterceptor() {  return new AuthorityInterceptor();  }  
} 

1、一定要加@Configuration 这个注解,在启动的时候在会被加载。

2、有一些教程是用的“WebMvcConfigurerAdapter”,不过在spring5.0版本后这个类被丢弃了 WebMvcConfigurerAdapter ,虽然还可以用,但是看起来不好。

3、也有一些教程使用的WebMvcConfigurationSupport,我使用后发现,classpath:/META/resources/,classpath:/resources/,classpath:/static/,classpath:/public/不生效。具体可以原因,大家可以看下源码因为:WebMvcAutoConfiguration上有个条件注解:

@ConditionalOnMissingBean(WebMvcConfigurationSupport.class) 
所以还是建议使用WebMvcConfigurer, 其实springMVC很多东西,都可以搬到springboot中来使用,只需要把配置文件的模式,改成 对应@Configuration 类就好了。

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

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

相关文章

FPGA之 串口UART通信

FPGA之串口UART通信 1. UART发送模块(Transmitter)2. UART接收模块(Receiver)3. testbench4. 边沿检测电路 串口(Universal Asynchronous Receiver/Transmitter,UART)是一种串行通信协议&#x…

通义千问Qwen-VL-Chat大模型本地部署(一)

目录 前言 环境准备 软件安装 其它库安装启动项目 FASTAPI 小结 前言 人工智能大模型是一种能够利用大数据和神经网络来模拟人类思维和创造力的人工智能算法。它利用海量的数据和深度学习技术来理解、生成和预测新内容,通常情况下有数十亿乃至数百亿个参数&#xf…

什么?这动物图片可以上国家地理?

stable difussion中大部分的模型都是关于人的,今天交给大家一些不一样的:如何生成动物图片。在这篇文章中我们将会学到如何生成逼真的动物,可爱的动物,还有幻想中的动物。 准备工作 当然前提是你需要一个SD的软件,你可以用本地的SD webUI或…

[Spring] SpringBoot基本配置与快速上手

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…

企业如何做好数据防泄密丨十个措施杜绝泄密事件

在当今数字化时代,信息泄露对企业构成了前所未有的威胁。企业的创新成果、专利技术和商业机密是其竞争力的核心。防止泄密可以确保这些关键资产不被非法复制或盗用。 客户数据是企业的宝贵资源。保护客户隐私不被泄露,不仅是法律要求,更是赢…

两位软件工程师创业,开发出一款软件质量保证自主AI代理,融资总额超3000万美元

编译整理|TesterHome社区 来源|TechCrunch 随着生成式人工智能(generative AI)的出现,人工智能应用正在改变和重塑各行各业,并改变人们的工作方式。软件开发也不例外。 总部位于旧金山和东京的初创公司Aut…

自动化立体仓库设计步骤:7步

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 完整版文件和更多学习资料,请球友到知识星球【智能仓储物流技术研习社】自行下载 这份文件是关于自动化立体仓库设计步骤的详细指南,其核心内容包括以下几个阶…

孟德尔随机化与痛风4

写在前面 今天阅读的文献是多种暴露与某结局的孟德尔随机化,算是以量取胜了。 The effect of metabolism-related lifestyle and clinical risk factors on digestive system cancers in East Asian populations: a two-sample Mendelian randomization analysis …

淘宝商品评论电商API接口:帮你轻松挑选优质商品

随着互联网的快速发展,电子商务应运而生,并在短时间内取得了巨大的成功。其中,淘宝作为我国最大的在线购物平台之一,每天都有数以亿计的商品交易发生。然而,面对海量的商品信息,如何挑选出优质商品成为了一…

800 元打造家庭版 SOC 安全运营中心

今天,我们开始一系列新的文章,将从独特而全面的角度探索网络安全世界,结合安全双方:红队和蓝队。 这种方法通常称为“紫队”,集成了进攻和防御技术,以提供对威胁和安全解决方案的全面了解。 在本系列的第一篇文章中,我们将指导您完成以 100 欧元约800元左右的预算创建…

无人机在交通管理方面的应用与潜力

随着智能化和数字化技术的发展,无人机已经成为智慧交通管理体系中的重要一环。无人机能够搭载各种专业设备,如超清摄像头、红外热成像摄像头、目标跟踪器等,从而完成多任务的数据采集和快速机动的任务执行。这些数据通过无线传输实时回传&…

LVS+Nginx高可用集群--基础篇(二)

1.虚拟主机-使用nginx为静态资源提供服务 静态资源服务器:主要包括两类资源,网页;图片,音频等; 也可以通过别名设置静态资源路径。 配置代码: server {listen 88;server_name localhost;locatio…

Kudu分区策略

Kudu表的分区策略主要有三种:范围分区(Partition By Range)、哈希分区(Partition By Hash)和高级分区(Partition By Hash And Range)。这些策略都要求分区字段必须包含在主键中。 范围分区&…

数据安全治理:从库级权限申请到表级权限申请

背景 随着数据安全意识的提高,企业越来越重视数据治理和权限管理。传统数仓大多对库级别进行读写授权,仅对人工标记的敏感库进行表级别授权,但由于敏感等级是由人为标记,错误率较高,故期望将权限申请流程细化到表级申…

树莓派_Pytorch学习笔记20:初步认识深度学习框架

今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi) 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: ​ Python 版本3.7.3: ​ 本文很水,就介绍一下我以后的学习使用P…

【线程同步-1】

三大不安全案例 1、车站买票 package syn; ​ //不安全的买票 //线程不安全,有负数 public class UnsafeBuyTicket {public static void main(String[] args) {BuyTicket buyTicket new BuyTicket();new Thread(buyTicket,"xiaoming").start();new Thr…

STM32-按键及传感器模块

本内容是基于江协科技STM32视频整理而得。 1. 按键及传感器模块 1.1 按键简介 按键:常见的输入设备,按下导通,松手断开; 按键抖动:由于按键内部使用的是机械式弹簧片来进行通断的,所以在按下和松手的瞬间…

【代码随想录】【算法训练营】【第63天】 [卡码53]寻宝

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 63,周二,ding~ 题目详情 [卡码53] 寻宝 题目描述 卡码53 寻宝 解题思路 前提: 思路: 重点: 代码实现 C语言 prim算法 kruskal…

百望股份于港交所上市 用户量突破2300万

7月9日,百望股份(股份代码:6657.HK)正式于港交所上市,以32港元价格开盘,成为“电子发票第一股”。 招股书披露,百望股份成立于2015年,作为一家专注于企业数字化解决方案的提供商&…

C++ | Leetcode C++题解之第221题最大正方形

题目&#xff1a; 题解&#xff1a; class Solution { public:int maximalSquare(vector<vector<char>>& matrix) {if (matrix.size() 0 || matrix[0].size() 0) {return 0;}int maxSide 0;int rows matrix.size(), columns matrix[0].size();vector<…