当前位置:   article > 正文

swagger接口文档请求/localhost:8080/doc.html被过滤器拦截_swagger doc.html

swagger doc.html

#问题:swagger接口文档请求/localhost:8080/doc.html被过滤器拦截

在使用过滤器和拦截器时候会设置拦截哪些请求,
在这里插入图片描述
下面这一步是设置放行哪些请求,有/login和/doc.html
但是在设置拦截/doc.html后,访问localhost:8080/doc.html去查看接口文档还是会被拦截;
在这里插入图片描述

解决方法:试试多放行三个路径,如下图:
在这里插入图片描述

//拦截所有请求
//Filter是java三大组件,要在springboot里使用要加启动类@ServletComponentScan注解
配置过滤器要拦截的请求路径( /* 表示拦截浏览器的所有请求 )
@WebFilter(urlPatterns = "/*")
@Slf4j
public class LoginCheckFilter implements Filter {

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //前置:强制转换为http协议的请求对象、响应对象 (转换原因:要使用子类中特有方法)
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;

        //1.获取请求url
        String url = request.getRequestURI().toString();
        //2.判断请求url中是否包含login,如果包含,说明是登录操作,放行
        //下面这个拦截非常重要,请务必整理笔记
        if (url.contains("/login") || url.equals("/doc.html") || url.contains("/swagger-ui.html") || url.contains("/swagger-resources") || url.contains("/v2/api-docs") ){
            filterChain.doFilter(request, response); // 放行请求
            return;
        }

        //3.获取请求头中的令牌(token)
        String jwt = request.getHeader("token");
        log.info("从请求头中获取的令牌{}",jwt);

        //4.判断令牌是否存在,如果不存在,返回错误信息(未登录)
        if(!StringUtils.hasLength(jwt)){
            //和前端约定好的,返回Not_LOGIN
            log.info("请求头token为空,返回登录信息");
            Result error = Result.error("NOT_LOGIN");
            //将对象转换为json字符串
            String notLogain = JSONObject.toJSONString(error);
            response.getWriter().write(notLogain);
            return;
        }

        //5.解析token,如果解析失败,返回错误结果
        try {
            JwtUtils.parseJWT(jwt);
        } catch (Exception e) {
            e.printStackTrace();
            log.info("解析令牌失败,返回未登录错误信息");
            Result error = Result.error("Not_Login");
            //将对象转换为json字符串
            String notLogain = JSONObject.toJSONString(error);
            response.getWriter().write(notLogain);
            return;
        }
        //6.放行操作
        log.info("令牌合法,放行");
}

  • 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
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/83586
推荐阅读
相关标签
  

闽ICP备14008679号