springboot拦截器

1.spring boot拦截器默认有HandlerInterceptorAdapter、 AbstractHandlerMapping、UserRoleAuthorizationInterceptor、LocaleChangeInterceptor、ThemeChangeInterceptor 

 1、拦截器代码(需要springboot扫描到注解)

package com.yb.fw.app.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import com.yb.fw.core.helper.FwConstant;

@Component
public class AuthorityInterceptor implements HandlerInterceptor {

    //@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
            Object handler) throws Exception {        
        String url = request.getRequestURI();
//        System.out.println("AuthorityInterceptor preHandle="+url);
        if(url.indexOf("/app/login.do")>=0) {
            return true;
        }else if(url.indexOf("/app/land.do")>=0) {
            return true;
        }else if(url.indexOf("/app/land2.do")>=0) {
            return true;
        }else if(url.indexOf("/app/check.do")>=0) {
            return true;
        }else if(url.indexOf("/app/checkpage.do")>=0) {
            return true;
        }else if(url.indexOf("/app/utility/getVerifyCode.do")>=0) {
            return true;
        }
        HttpSession session = request.getSession();
        if(session.getAttribute(FwConstant.SESSION_USERINFO) == null) {
            response.sendRedirect(request.getContextPath()+"/app/land.do");
            return false;
        }else return true;
    }
    
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response,
            Object handler, ModelAndView mv) throws Exception {
    }
    
    @Override
    public void afterCompletion(HttpServletRequest request,
            HttpServletResponse response, Object handler, Exception exception)
            throws Exception {
    }
}

2、拦截器配置类(需要springboot扫描到注解)

package com.yb.fw.config;

import java.util.HashMap;
import java.util.Map;

import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import com.yb.fw.app.interceptor.AuthorityInterceptor;
import com.yb.fw.app.interceptor.FrontAuthorityInterceptor;
import com.yb.fw.app.interceptor.UserOpInterceptor;
import com.yb.fw.core.helper.BaseRepositoryFactoryBean;

@Configuration
public class WebAppConfig extends WebMvcConfigurerAdapter{


    @Autowired
    UserOpInterceptor userOpInterceptor;
    
    @Autowired
    AuthorityInterceptor authorityInterceptor;
    
    @Autowired
    FrontAuthorityInterceptor frontAuthorityInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //多个拦截器组成一个拦截器链
        // addPathPatterns用于添加拦截规则
        // excludePathPatterns用户排除拦截
        registry.addInterceptor(frontAuthorityInterceptor).addPathPatterns("/store/**"); //根据这个判断它要不要进入自己定义的拦截器
        registry.addInterceptor(authorityInterceptor).addPathPatterns("/app/**"); //对来自/** 全路径请求进行拦截
       registry.addInterceptor(userOpInterceptor).addPathPatterns("/app/**"); //对来自/** 全路径请求进行拦截       
        super.addInterceptors(registry);
    }
    

}

 

posted on 2019-10-11 10:49  小破孩楼主  阅读(401)  评论(0编辑  收藏  举报