sa-token 全局过滤器 knife4j 接口文档访问失败

  • Post author:
  • Post category:其他


spring cloud gatway 集成 sa-token 全局过滤器 导致 knife4j 接口文档访问失败,需要放行接口文档路径。

注意:此处 knife4j 版本为 2.0.9 不同版本的路径是不一样的。具体请参考:


Knife4j文档请求异常

@Bean
    public SaReactorFilter getSaReactorFilter() {
        return new SaReactorFilter()
                // 拦截地址
                .addInclude("/**")
                // 开放地址 接口文档
                .addExclude(
                
                        "/doc.html",
                        "/doc.html*",
                        "/webjars/**",
                        "/img.icons/**",
                        "/swagger-resources/**",
                        "/**/v2/api-docs"
                )
                // 鉴权方法:每次访问进入
                .setAuth(obj -> {
//                    // 登录校验 -- 拦截所有路由,开放登录地址
                    SaRouter.match("/**", "/login/**", r -> StpUtil.checkLogin());

                })
                // 设置跨域 必须
                .setBeforeAuth(obj -> {
                    // ---------- 设置跨域响应头 ----------
                    SaHolder.getResponse()
                            // 允许指定域访问跨域资源
                            .setHeader("Access-Control-Allow-Origin", CorsConfiguration.ALLOWED_ORIGIN)
                            // 允许所有请求方式
                            .setHeader("Access-Control-Allow-Methods", CorsConfiguration.ALLOWED_METHODS)
                            // 有效时间
                            .setHeader("Access-Control-Max-Age", CorsConfiguration.MAX_AGE)
                            .setHeader("Access-Control-Expose-Headers", CorsConfiguration.ALLOWED_EXPOSE)
                            // 允许的header参数
                            .setHeader("Access-Control-Allow-Headers", CorsConfiguration.ALLOWED_HEADERS);

                    // 如果是预检请求,则立即返回到前端
                    SaRouter.match(SaHttpMethod.OPTIONS).back();
                })
                // 异常处理方法:每次setAuth函数出现异常时进入
                .setError(e -> {
  
                });
    }



版权声明:本文为qq_37681291原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。