springboot之路径拦截器
方式一:不推荐,在代码中添加路径
1、写一个拦截器,继承HandlerInterceptor类
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; @Component
public class ConfigPathInterceptor implements HandlerInterceptor { @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("执行了拦截器");
if(request.getMethod().equalsIgnoreCase("GET")){
return true;
} return false;
}
}
2、将拦截器添加至拦截器配置中
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;
import java.util.ArrayList;
import java.util.List; @Configuration
public class InterceptorConfig implements WebMvcConfigurer { @Override
public void addInterceptors(InterceptorRegistry registry) {
List<String> includePathLists= new ArrayList<>();
includePathLists.add("/showUser");
List<String> excludePathLists= new ArrayList<>();
excludePathLists.add("/mybatisPlus");
// registry.addInterceptor(authenticationInterceptor())
// .addPathPatterns("/**"); // 拦截所有请求,通过判断是否有 @LoginRequired 注解 决定是否需要登录
registry.addInterceptor(configPathInterceptor())
.excludePathPatterns(excludePathLists) // 不拦截
.addPathPatterns(includePathLists); // 拦截
}
@Bean
public AuthenticationInterceptor authenticationInterceptor() {
return new AuthenticationInterceptor();
} @Bean
public ConfigPathInterceptor configPathInterceptor() {
return new ConfigPathInterceptor();
}
}
这样就完成了拦截器
方式二:推荐,在配置文件中添加路径
1、在application.yml文件中添加路径
#默认使用配置
spring:
profiles:
active: @activatedProperties@
redis:
host: 127.0.0.1
port: 6379
password:
lettuce:
pool:
max-active: 100
max-idle: 10
max-wait: 100000 #公共配置与profiles选择无关
mybatis-plus:
typeAliasesPackage: com.cn.commodity.entity
mapperLocations: classpath:mapper/*.xml logging:
level:
com.cn.commodity.dao : debug config:
path:
#该路径下GET请求放行,其他拦截
normal: #该路径下任何类型请求均拦截
special:
- /showUser
#该路径下任何请求均放行
exclude:
- /mybatisPlus
2、创建拦截器ConfigPathInterceptor继承HandlerInterceptor
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; @Component
public class ConfigPathInterceptor implements HandlerInterceptor { @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("执行了拦截器");
if(request.getMethod().equalsIgnoreCase("GET")){
return true;
}
return false;
}
}
3、将拦截器添加到配置中
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.ArrayList;
import java.util.List; @Configuration
@Profile({"prod","test"}) //只有测试和生产环境,拦截器才启作用
@ConfigurationProperties(prefix = "config.path") //读取配置文件
public class InterceptorConfig implements WebMvcConfigurer { private List<String> normal = new ArrayList<>(); private List<String> special = new ArrayList<>(); private List<String> exclude = new ArrayList<>(); public void setExclude(List<String> exclude) {
this.exclude = exclude;
} public void setNormal(List<String> normal) {
this.normal = normal;
} public void setSpecial(List<String> special) {
this.special = special;
} @Override
public void addInterceptors(InterceptorRegistry registry) {
// registry.addInterceptor(authenticationInterceptor())
// .addPathPatterns("/**"); // 拦截所有请求,通过判断是否有 @LoginRequired 注解 决定是否需要登录
registry.addInterceptor(configPathInterceptor())
.excludePathPatterns(exclude) // 不拦截
.addPathPatterns(special); // 拦截 }
@Bean
public AuthenticationInterceptor authenticationInterceptor() {
return new AuthenticationInterceptor();
} @Bean
public ConfigPathInterceptor configPathInterceptor() {
return new ConfigPathInterceptor();
}
}
springboot之路径拦截器的更多相关文章
- SpringBoot如何添加拦截器
在web开发的过程中,为了实现登录权限验证,我们往往需要添加一个拦截器在用户的的请求到达controller层的时候实现登录验证,那么SpringBoot如何添加拦截器呢? 步骤如下: 1.继承Web ...
- 在springboot中使用拦截器
在springMVC中可以实现拦截器,是通过实现HandlerInterceptor接口,然后在springmvc-web.xml中配置就可以使用拦截器了.在springboot中拦截器也是一样的思想 ...
- Springboot + redis + 注解 + 拦截器来实现接口幂等性校验
Springboot + redis + 注解 + 拦截器来实现接口幂等性校验 1. SpringBoot 整合篇 2. 手写一套迷你版HTTP服务器 3. 记住:永远不要在MySQL中使用UTF ...
- springmvc以及springboot中的拦截器配置
拦截器两种实现 如果不同的controller中都需要拦截器,不能使用相同的拦截器,因为拦截器不能跨controller,这个时候只能为不同的controller配置不同的拦截器,每一个拦截器只能 ...
- springboot中使用拦截器、监听器、过滤器
拦截器.过滤器.监听器在web项目中很常见,这里对springboot中怎么去使用做一个总结. 1. 拦截器(Interceptor) 我们需要对一个类实现HandlerInterceptor接 ...
- springboot项目配置拦截器,进行登陆等拦截
新建拦截类: public class LoginInterceptor implements HandlerInterceptor{ private static Log logger = LogF ...
- 分享知识-快乐自己:SpringBoot结合使用拦截器(判断是否用户是否已登陆)
所有的开发之中拦截器一定是一个必须要使用的功能,利用拦截器可以更加有效的实现数据的验证处理,而且最为幸运的是在SpringBoot之中所使用的拦截器与Spring中的拦截器完全一样. 基础拦截器操作: ...
- springboot jsp,过滤器,拦截器
springboot使用jsp,过滤器,拦截器(拦截器与过滤器区别重点) jsp使用配置 一 创建springboot项目在maven中暂时只添加两个Dependencies :devtools(热部 ...
- SpringBoot起飞系列-拦截器和统一错误处理(七)
一.前言 在前边部分我们已经学会了基本的web开发流程,在web开发中,我们通常会对请求做统一处理,比如未登录的用户要拦截掉相关请求,报错页面统一显示等等,这些都需要配置,可以大大简化我们的代码,实现 ...
随机推荐
- Ubuntu 系统信息相关命令
系统信息相关命令 本节内容主要是为了方便通过远程终端维护服务器时,查看服务器上当前 系统日期和时间 / 磁盘空间占用情况 / 程序执行情况 本小结学习的终端命令基本都是查询命令,通过这些命令对系统资源 ...
- Oracle 找到引起账户锁定的IP
在ORACLE数据库中,如果没有修改过FAILED_LOGIN_ATTEMPTS的话,默认10次尝试失败后就会锁住用户.此时再登录数据库,就会遇到ORA-28000: the account is l ...
- 《JavaScript DOM编程艺术》(第二版)学习笔记(一)
这本书去年就买了但一直没看,闲暇的时候看了下,发现里面写的内容还真是不错,所以决定一边在博客上记录些学习的笔记,以便以后观看及查找方便. js文件最好的做法是放在< body>标签里,这样 ...
- Anton and Chess(模拟+思维)
http://codeforces.com/group/1EzrFFyOc0/contest/734/problem/D 题意:就是给你一个很大的棋盘,给你一个白棋的位置还有n个黑棋的位置,问你黑棋能 ...
- 图卷积神经网络(GCN)入门
图卷积网络Graph Convolutional Nueral Network,简称GCN,最近两年大热,取得不少进展.不得不专门为GCN开一个新篇章,表示其重要程度.本文结合大量参考文献,从理论到实 ...
- 阿里云服务器搭建gitlab
参考这位大神的博客 https://blog.csdn.net/zhaoyanjun6/article/details/79144175 安装邮件通知服务系统时,报了如下错误:send-mail: f ...
- (二)AppScan使用教程
1.新建扫描:一般选择 常规扫描 2.选择扫描的平台:web或app 3.扫描配置向导 ①配置URL和服务器 ②配置登录管理 在扫描的过程中,可能会不小心碰到退出按钮导致Appscan注销.因此,要登 ...
- LOJ #3119「CTS2019 | CTSC2019」随机立方体 (容斥)
博客链接 里面有个下降幂应该是上升幂 还有个bk的式子省略了k^3 CODE 蛮短的 #include <bits/stdc++.h> using namespace std; const ...
- 轮播图的3个常见bug,即处理bug思路及其解决办法
1,下载jquery.js文件,并且导入 2,在下面的img中写入可以用图片路径 <!-- 第一个bug: 刚打开页面时,按一下左键图片没切换,再按第二下时才切换图片. 第二个bug: Ctrl ...
- Activiti服务类- IdentityService服务类
转自:https://www.cnblogs.com/liuqing576598117/p/9815013.html 一.内置用户组(角色)设计表概念 用户和组(或者叫做角色),多对多关联,通过关联表 ...