美文网首页
Spring 实现多个拦截器

Spring 实现多个拦截器

作者: 老陈的记事本 | 来源:发表于2019-07-18 16:31 被阅读0次

拦截器文件

package com.puzzle.api.AuthorityInterceptor;

import org.springframework.beans.factory.annotation.Autowired;
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.WebMvcConfigurer;

/**
 * @author 陈金泽
 * @version V1.0
 * @date 2019/7/2 13:46
 */
@Configuration
public class AuthorityInterceptor implements WebMvcConfigurer {
    @Autowired
    private ApiAuthorityInterceptor   apiAuthorityInterceptor;
    @Autowired
    private AdminAuthorityInterceptor adminAuthorityInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 注册拦截器
        InterceptorRegistration loginRegistryApi = registry.addInterceptor(apiAuthorityInterceptor);
        InterceptorRegistration loginRegistryAdmin = registry.addInterceptor(adminAuthorityInterceptor);

        // 拦截路径
        loginRegistryApi.addPathPatterns("/admin/*");
        loginRegistryAdmin.addPathPatterns("/api/*");


        // 排除路径
        loginRegistryApi.excludePathPatterns("/admin/login");
        loginRegistryApi.excludePathPatterns("/admin/loginPort");


        // 排除资源请求
        loginRegistryApi.excludePathPatterns("/**/*.css");
        loginRegistryApi.excludePathPatterns("/**/*.js");
        loginRegistryApi.excludePathPatterns("/**/*.png");
        loginRegistryApi.excludePathPatterns("/**/*.gif");
        loginRegistryApi.excludePathPatterns("/**/*.jpg");
        loginRegistryApi.excludePathPatterns("/**/*.jpeg");
        loginRegistryApi.excludePathPatterns("/**/*.ttf");
        loginRegistryApi.excludePathPatterns("/**/*.woff");
    }
}

API拦截器

package com.puzzle.api.AuthorityInterceptor;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

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

@Component
public class ApiAuthorityInterceptor implements HandlerInterceptor {

    @Override//在一个请求进入Controller层方法执行前执行这个方法
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println(request.getRequestURI()+"aaaaa");
        return true;//方法给予执行,就是允许controller的方法进行执行
        //false 不允许,可以在这之前在reponse中编写返回的结果

    }
    //返回model前
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println(request.getRequestURI()+"bbb");
    }

    //返回model后
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        //在一个请求处理完毕,即将销毁的时候,执行,可以做一些资源释放之类的工作
    }
}

ADMIN拦截器

package com.puzzle.api.AuthorityInterceptor;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

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

@Component
public class AdminAuthorityInterceptor implements HandlerInterceptor {

    @Override//在一个请求进入Controller层方法执行前执行这个方法
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println(request.getRequestURI()+"cccc");
        return true;//方法给予执行,就是允许controller的方法进行执行
        //false 不允许,可以在这之前在reponse中编写返回的结果

    }
    //返回model前
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println(request.getRequestURI()+"aaaaa");
    }

    //返回model后
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        //在一个请求处理完毕,即将销毁的时候,执行,可以做一些资源释放之类的工作
    }
}

相关文章

网友评论

      本文标题:Spring 实现多个拦截器

      本文链接:https://www.haomeiwen.com/subject/mtnllctx.html