【SpringBoot】六、SpringBoot中拦截器功能的实现

Spring Boot 1.5,都是靠重写 WebMvcConfigurerAdapter 的方法来添加自定义拦截器
SpringBoot 2.0 后,推荐实现 WebMvcConfigurer 或者继承 WebMvcConfigurationSupport 实现

本次我们选择实现 WebMvcConfigurer 接口实现拦截器功能

创建 MyWebConfigurer.java,并实现 WebMvcConfigurer 接口

@Configuration
public class MyWebConfigurer implements WebMvcConfigurer {
	...
}

开放静态资源

在 SpringBoot 中,我们将静态资源放在 resources/static/ 目录下,如图:
静态资源

/**
 * 这个方法是用来配置静态资源的,比如html,js,css,等等
 *
 * @param registry
 */
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    WebMvcConfigurer.super.addResourceHandlers(registry);
}

我们设置 static/ 目录下的资源访问不会被拦截

请求路径拦截

/**
 * 这个方法用来注册拦截器,我们自己写好的拦截器需要通过这里添加注册才能生效
 *
 * @param registry
 */
@Override
public void addInterceptors(InterceptorRegistry registry) {
    // 表示不会拦截的请求
    registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns(
            "/login",
            "/register",
            "/static/**");
    WebMvcConfigurer.super.addInterceptors(registry);
}

我们开放了 /login,/register,/static/**,这些路径不会被拦截

默认访问路径

/**
 * 设置默认页面
 *
 * @param registry
 */
@Override
public void addViewControllers(ViewControllerRegistry registry) {
    // registry.addViewController("/").setViewName("forward:/login.html");
    registry.addViewController("").setViewName("index");
    // 设置优先级  当请求地址有重复的时候  执行优先级最高的
    registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
    WebMvcConfigurer.super.addViewControllers(registry);
}

设置项目默认访问地址,例如我们只访问:127.0.0.1:8080,就会请求到 index.html

跨域处理

/**
 * 跨域处理
 *
 * @param registry
 */
public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**")
            .allowedOrigins("*")
            .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
            .allowCredentials(true)
            .allowedHeaders("*")
            .maxAge(3600);
}

更多关于跨域处理的知识,请看我的另一篇博客:SpringBoot中使用Cors开启跨域

关于 SpringBoot 中拦截器功能的实现就介绍到这儿,基本能满足我们日常开发需要

如您在阅读中发现不足,欢迎留言!!!

发布了94 篇原创文章 · 获赞 280 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_40065776/article/details/105587456