SpringBootブロッキング詳細構成

3322 ワード

SpringBootブロッキング詳細構成
一、ymlファイル構成
path:
   include:
      - /*/*
   exclude:
      - /swagger-ui.html/**
      - /v2/**
      - /user/login
      - /dev/**
      - /test/**
 、   Config  yml    
@Component
@ConfigurationProperties(prefix = "path")
public class PathConfig {

    private List include = new ArrayList<>();

    private List exclude = new ArrayList<>();

    public List getInclude() {
        return include;
    }

    public void setInclude(List include) {
        this.include = include;
    }

    public List getExclude() {
        return exclude;
    }

    public void setExclude(List exclude) {
        this.exclude = exclude;
    }
}

三、ブロッカーはアクセス可能と非アクセスの集合を取得する
/**
 * @Author songmo
 * @Date 2020/4/17 11:26
 * @Description      
 */
@Configuration
public class LoginAdapter implements WebMvcConfigurer {

    @Autowired
    private PathConfig pathConfig;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        InterceptorRegistration ir = registry.addInterceptor(new LoginInterceptor());
        //   
        ir.addPathPatterns(pathConfig.getInclude());
        //      
        ir.excludePathPatterns(pathConfig.getExclude());
    }
}

四、ブロック制御類
/**
*@Author songmo
*@Date 2020/4/17 11:23
*@Description    
*/
public class LoginInterceptor implements HandlerInterceptor {
    private static Logger LOGGER = LoggerFactory.getLogger(LoginInterceptor.class);
    /**
    *@Author songmo
    *@Date 2020/4/17 11:25
    *@Description            (Controller      )
    */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        //    (    session    user)(  user         ,  session)
        User user=(User)request.getSession().getAttribute("user");
        if(user != null){
            return true;
        }
        //  response    403
//        response.setStatus(403);
        try {
            PrintWriter out = response.getWriter();
            ResponseInfo responseInfo = ResponseInfo.ok();
            responseInfo.setCode(403);
            out.append(JSON.toJSONString(responseInfo));
        }catch (Exception e){
            LOGGER.error("       ", e);
            response.setStatus(500);
        }
        //     false ,    ,               
        //     true ,             
        return false;
    }

    /**
    *@Author songmo
    *@Date 2020/4/17 11:24
    *@Description           ,          (Controller      )
    */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
//        LOGGER.info("   TestInterceptor postHandle  ");
    }

    /**
    *@Author songmo
    *@Date 2020/4/17 11:25
    *@Description             ,    DispatcherServlet             (             )
    */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
//        LOGGER.info("   TestInterceptor afterCompletion  ");
    }
    
}