Springboot拦截器创建

拦截器创建

1、创建拦截器

复制代码
@Component
public class RequestInterceptor  implements HandlerInterceptor {
   public boolean  preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
       if(request.getMethod().equals("OPTIONS")){
           return true;
       }
       System.out.println("it is preHandle");
       String accessToken= request.getHeader("accessToken");
       System.out.println("mehtod:"+request.getMethod()+"; accessToken = " + accessToken);
       boolean resultFlag=true;
     if(resultFlag){
         Result result=new Result();
         result.msg="22222";
         result.code="001";
         setResult(request,response,result);
         return  false;
     }

       return  true;
   }
    /**
     * 验签失败返回结果信息
     *
     * @param request
     * @param response
     * @param result
     */
    private void setResult(HttpServletRequest request, HttpServletResponse response, Result result) {
        response.setContentType("application/json; charset=UTF-8");
            response.addHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
            response.addHeader("Access-Control-Allow-Credentials", "true");
            response.addHeader("Access-Control-Allow-Headers", "accessToken,traceID,productCode,productVersion,appKeySign,clientIP");

        PrintWriter out = null;
        try {
            out = response.getWriter();
            out.append(JSON.toJSON(result).toString());

        } catch (IOException e) {
//            logger.error("ValidateAPPKeyInterceptor setResult", e);
        } finally {
            if (out!=null) {
                out.close();
            }
        }
    }
}
复制代码

2、设置拦截器放行地址和启用拦截器

 

1
2
3
4
5
6
7
8
9
10
11
12
@Configuration
public class MywebConfig implements WebMvcConfigurer {
 
    @Resource
    RequestInterceptor requestInterceptor;
 
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(requestInterceptor)
                .addPathPatterns("/**");
    }
}

  

3、拦截器中不通过时返回结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
     * 验签失败返回结果信息
     *
     * @param request
     * @param response
     * @param result
     */
    private void setResult(HttpServletRequest request, HttpServletResponse response, Result result) {
        response.setContentType("application/json; charset=UTF-8");
            response.addHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
            response.addHeader("Access-Control-Allow-Credentials", "true");
            response.addHeader("Access-Control-Allow-Headers", "accessToken,traceID,productCode,productVersion,appKeySign,clientIP");
 
        PrintWriter out = null;
        try {
            out = response.getWriter();
            out.append(JSON.toJSON(result).toString());
 
        } catch (IOException e) {
//            logger.error("ValidateAPPKeyInterceptor setResult", e);
        } finally {
            if (out!=null) {
                out.close();
            }
        }
    }

  

posted @   xiaoBai1001  阅读(188)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2019-01-04 EntityFramework 知识点与sql优化汇总
点击右上角即可分享
微信分享提示