`
lihao312
  • 浏览: 483550 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

spring-boot 加入拦截器Interceptor

阅读更多
1.spring boot拦截器默认有
  • HandlerInterceptorAdapter
  • AbstractHandlerMapping
  • UserRoleAuthorizationInterceptor
  • LocaleChangeInterceptor
  • ThemeChangeInterceptor


2.配置spring mvc的拦截器WebMvcConfigurerAdapter
public class WebAppConfig extends WebMvcConfigurerAdapter


3.实现添加拦截器方法
public void addInterceptors(InterceptorRegistry registry){

}
registry.addInterceptor可以通过此方法添加拦截器, 可以是spring提供的或者自己添加的

4.实例部分

public class WebAppConfig extends WebMvcConfigurerAdapter{	
    public static void main(String[] args) {
		SpringApplication.run(WebAppConfig.class, args);
	} 
    
    /**
     * 配置拦截器
     * @author lance
     * @param registry
     */
    public void addInterceptors(InterceptorRegistry registry) {
    	registry.addInterceptor(new UserSecurityInterceptor()).addPathPatterns("/user/**");
	}
}

UserSecurityInterceptor代码
public class UserSecurityInterceptor implements HandlerInterceptor {

	@Override
	public boolean preHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler) throws Exception {
        
        return true;
	}

	@Override
	public void postHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
	}

	@Override
	public void afterCompletion(HttpServletRequest request,
			HttpServletResponse response, Object handler, Exception ex)
			throws Exception {

	}

}


5.demo地址
https://github.com/leelance/spring-boot-all/tree/master/spring-boot-samples
分享到:
评论
5 楼 feibabm 2017-06-01  
楼主,想问下,我配置的这个拦截器为啥没有生效呢?

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@Configuration
public class WebSecurityConfig extends WebMvcConfigurerAdapter {

    /**
     * 登录session key
     */
    public final static String SESSION_KEY = "user";

    @Bean
    public SecurityInterceptor getSecurityInterceptor() {
        return new SecurityInterceptor();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        InterceptorRegistration addInterceptor = registry.addInterceptor(getSecurityInterceptor());

        // 排除配置
//        addInterceptor.excludePathPatterns("/error");
//        addInterceptor.excludePathPatterns("/login**");

        // 拦截配置
        addInterceptor.addPathPatterns("/**");
    }

    private class SecurityInterceptor extends HandlerInterceptorAdapter {

        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
                throws Exception {
            HttpSession session = request.getSession();
            if (session.getAttribute(SESSION_KEY) != null)
                return true;

            // 跳转登录
            String url = "/login";
            response.sendRedirect(url);
            return false;
        }
    }
}
4 楼 lihao312 2016-07-07  
什么都不懂的孩子 写道
请问一下registry.addInterceptor(new UserSecurityInterceptor()).addPathPatterns("/user/**");  一句的作用是什么?


是真对请求的URl拦截的,只拦截/user/**下的所有路径,其他路径不拦截
3 楼 爱you不释手 2016-06-23  
1 、2 楼 那句的意思是加入名称为UserSecurityInterceptor的拦截器,并拦截已user开头的请求
2 楼 somefuture 2015-11-05  
什么都不懂的孩子 写道
请问一下registry.addInterceptor(new UserSecurityInterceptor()).addPathPatterns("/user/**");  一句的作用是什么?

这个是调用自定义的拦截器拦截指定的路径模式。
1 楼 什么都不懂的孩子 2015-06-02  
请问一下registry.addInterceptor(new UserSecurityInterceptor()).addPathPatterns("/user/**");  一句的作用是什么?

相关推荐

    spring-boot添加 拦截器

    在Spring Boot应用中,拦截器(Interceptor)是一种用于处理HTTP请求和响应的机制,它可以对请求进行预处理,也可以在请求处理之后进行后处理。在Web开发中,拦截器常被用于实现如登录验证、权限控制、日志记录等...

    参照阿里druid整理druid-spring-boot-starter的demo

    4. **SQL解析与拦截器**:Druid提供了SQL解析和拦截器功能,可以用于日志记录、性能分析等。在`application.yml`中添加相关配置: ```yaml spring: datasource: druid: web-stat-filter: enabled: true stat-...

    spring-boot-starter-mybatis-spring-boot-3.0.0.tar.gz

    - 自定义拦截器:通过实现`Interceptor`接口,可以定制SQL执行前后的处理逻辑。 4. **Linux环境下的部署**: - 下载:在官方仓库或第三方平台找到"spring-boot-starter-mybatis-spring-boot-3.0.0.tar.gz",并...

    spring-boot 自定义xml配置web请求拦截器

    标题中的"spring-boot 自定义xml配置web请求拦截器"指的是在Spring Boot项目中,通过XML配置方式实现对Web请求的拦截处理。这涉及到Spring Boot的Web层架构、AOP(面向切面编程)以及自定义拦截器的概念。Spring ...

    spring boot加入拦截器Interceptor过程解析

    "Spring Boot 中的拦截器Interceptor 配置和使用详解" Spring Boot 框架提供了拦截器Interceptor机制,用于在请求处理前、后执行某些操作。拦截器Interceptor可以用来实现身份验证、日志记录、缓存、权限控制等...

    Spring Boot Aspect 切面 AOP 拦截器 Interceptor 监控control请求耗时

    在Spring Boot中,我们可以通过实现`HandlerInterceptor`接口并重写其三个方法——`preHandle()`, `postHandle()`, 和 `afterCompletion()` 来创建自定义的拦截器。 `preHandle()` 方法在目标处理方法调用之前执行...

    spring-boot.zip

    这个“spring-boot.zip”压缩包包含了一个使用Maven构建的Spring Boot工程模板,它整合了多种实用功能,如Swagger用于API文档,以及过滤器、拦截器、监听器和Servlet等核心组件。 1. Maven:Maven 是一个项目管理...

    java + spring boot +jpa 拦截器分库分表demo

    但有了Spring Boot和JPA,我们可以创建拦截器(Interceptor)来处理这些逻辑。Spring AOP(面向切面编程)允许我们在特定的切点(如:方法调用)前后插入自定义代码,这就为我们提供了实现分库分表的机会。 创建一...

    spring boot 登录拦截器

    Spring Boot利用Spring MVC的Filter或者Interceptor机制来实现拦截器。这里我们主要关注`HandlerInterceptor`接口,它提供了三个方法: 1. `preHandle(HttpServletRequest request, HttpServletResponse response, ...

    SpringBoot的拦截器

    在Spring Boot应用中,拦截器(Interceptor)是一个重要的组件,主要用于处理HTTP请求和响应,它在控制器(Controller)处理请求之前和之后进行拦截,可以实现如权限验证、日志记录、性能统计等功能。Spring Boot...

    CXF和Spring整合,并且添加拦截器

    **标题:“CXF和Spring整合,并且添加拦截器”** 在Java世界中,Apache CXF是一个流行的开源服务框架,用于创建和消费Web服务。它支持多种Web服务规范,包括SOAP、RESTful API以及WS-*标准。另一方面,Spring框架是...

    pagehelper-spring-boot-master.zip

    PageHelper主要通过MyBatis的拦截器(Interceptor)来实现。当执行SQL查询时,PageHelper会自动计算出当前页的数据范围,并修改原始的SQL语句,添加LIMIT或OFFSET子句,实现分页查询。 3. **PageHelper的使用步骤*...

    自己spring boot 拦截器

    创建自己的Spring Boot拦截器首先需要实现`HandlerInterceptor`接口或者继承`AbstractHandlerMethodInterceptor`抽象类。这个接口定义了三个方法: 1. `preHandle(HttpServletRequest request, HttpServletResponse...

    详解在Spring-Boot中实现通用Auth认证的几种方式

    Interceptor 是 Spring Boot 中的一种拦截器机制,它可以在 Controller 方法被执行前拦截请求。我们可以使用 Interceptor 来实现通用 Auth 认证。 首先,我们需要定义一个拦截器类 `AppkeyInterceptor`,该类需要...

    spring-security Jar包

    3. **过滤器链**:Spring Security 的核心是Filter Security Interceptor(过滤器安全拦截器)和Access Decision Manager(访问决策管理器)。过滤器链处理HTTP请求,进行身份验证和授权检查,而访问决策管理器根据...

    spring-boot-mybatis-interceptor:mybatis自定义主键插件,通过该插件生成分布式唯一雪花ID作为数据库表的主键

    Mybatis自定义插件生成...通过拦截器拦截Mybatis的insert语句,通过自定义注解获取到主键,并为该主键赋值雪花ID,插入数据库中。 2、技术架构 项目总体技术选型 SpringBoot2.1.7 + Mybatis + Maven3.5.4 + Mysql + lom

    spring boot 拦截器拦截/Filter 过滤session案例

    在本文中,我们将深入探讨如何在Spring Boot应用中使用拦截器(Interceptor)和过滤器(Filter)来处理用户的登录session。这两个组件都是Spring框架的重要部分,它们在处理HTTP请求和响应时发挥着关键作用。 首先...

    SpringBoot拦截器原理解析及使用方法

    然后,要将拦截器加入到SpringBoot的配置中,需要使用WebMvcConfigurer接口的addInterceptors方法。具体配置代码如下: ```java import org.springframework.context.annotation.Configuration; import org.spring...

    spring boot mybatis 国际化 拦截器

    在本文中,我们将深入探讨如何在Spring Boot应用中整合MyBatis,实现MySQL数据库连接,以及如何利用Spring MVC和拦截器来实现国际化(i18n)功能。此外,我们还将提及IIS 12作为可能的Web服务器选项。 首先,Spring...

    spring-web-5.2.4_spring-web_SSM框架_

    4. **Filter和Interceptor**:Spring Web支持自定义过滤器(Filter)和拦截器(Interceptor),可以实现全局的功能,如登录验证、日志记录、性能监控等。 5. **RESTful支持**:Spring Web提供对RESTful服务的良好...

Global site tag (gtag.js) - Google Analytics