起楚永世承,教崇忠孝,志尚宽平
清醒时做事,迷茫时读书,独处时思考,烦躁时运动,得意时淡然,失意时坦然,忙碌时专注,闲暇时蓄力。

springboot拦截器配置

1.新增一个配置中心(创建一个配置类)

package com.sjcf.common.Interceptor;

import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Resource
    private LoginInterceptor loginInterceptor;//新增的的拦截器依赖注入

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

    /**
     * Description : Group :
     * <p>
     * 实现自定义拦截器只需要3步 1、创建我们自己的拦截器类并实现 HandlerInterceptor 接口。
     * 2、创建一个Java类继承WebMvcConfigurerAdapter,并重写 addInterceptors 方法。
     * 3、实例化我们自定义的拦截器,然后将对像手动添加到拦截器链中(在addInterceptors方法中添加)。
     *
     * @param registry
     * @author honghh
     * @date 2019/3/22 0022 10:08
     * @author luoc
     * @date 2018/8/13 13:56
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        InterceptorRegistration registration = registry.addInterceptor(loginInterceptor);
        // 拦截配置
        registration.addPathPatterns("/**/**");
        List<String> list = new ArrayList<String>();
        // 排除配置
        list.add("/weixin/**");
        list.add("/case/**");

        list.add("/swagger-ui.html");
        list.add("/swagger-resources");
        list.add("/swagger-resources/**");
        list.add("/v2/api-docs");
        list.add("/swagger/**");
        list.add("/**/v2/api-docs");
        list.add("/swagger-resources/**/**");
        list.add("/**/*.js");
        list.add("/**/*.css");
        list.add("/**/*.png");
        list.add("/**/*.ico");
        list.add("/**/*.js");
        list.add("/**/*.js");

        list.add("/item/getItemClassOne");
        list.add("/item/getItemClassTwo");
        list.add("/winvk/**");
//        registration.excludePathPatterns("/weixin/**");
//        registration.excludePathPatterns("/case/**");
        registration.excludePathPatterns(list);
    }
}

2.这里是新增的拦截器loginInterceptor

package com.sjcf.common.Interceptor;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import com.sjcf.common.ResultData;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.json.JSONObject;
import lombok.extern.slf4j.Slf4j;

/**
 * 验证是否登录
 * 
 * @author luoc
 *
 */
@Slf4j //这个是日志,不用取消就行
@Component
public class LoginInterceptor extends HandlerInterceptorAdapter {

    /**
     * 验证是否登录
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {

        boolean bool = true;
//        String userid = request.getParameter("userid");
//        if (StrUtil.isEmpty(userid)) {
//            bool =  false;
//        }
        String session_key = request.getParameter("session_key");
        if (StrUtil.isEmpty(session_key)) {
            bool =  false;
        }
        String token = request.getParameter("token");
        if (StrUtil.isEmpty(token)) {
            bool =  false;
        }
        // token验证
        if (!SecureUtil.md5(session_key).equals(token)) {
            bool =  false;
        }
        if (!bool) {
//             String path = request.getScheme() //当前链接使用的协议
//                        +"://" + request.getServerName()//服务器地址 
//                        + ":" + request.getServerPort(); //端口号 
//             log.info(path+"/weixin/error");
//             response.sendRedirect(path+"/weixin/error");
            PrintWriter writer = null;
            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/html; charset=utf-8");
            try {
                writer = response.getWriter();
                writer.print(new JSONObject(ResultData.loginError()));

            } catch (IOException e) {
                log.error("response error", e);
            } finally {
                if (writer != null)
                    writer.close();
            }
        }
        return bool;
    }
}

最后重启测试这样就配置好了

posted @ 2020-10-08 15:46  一蹴而就  阅读(253)  评论(0编辑  收藏  举报