解决shiro整合swagger 拦截静态资源问题

公司接了一个新项目需要一份接口文档,所以集合了knife4j在项目中。添加项目依赖,因为公司的依赖管理是grable所以我添加的是glable格式的依赖如下:

 并且添加配置类

@Configuration
@EnableSwagger2
@EnableKnife4j
@ConfigurationProperties(prefix = "swagger")
public class SwaggerManualConfiguration {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .useDefaultResponseMessages(false)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("自己定义API文档")
                .description("自己定义")
                .termsOfServiceUrl("自己定义url")
                .version("1.0")
                .build();
    }
}

因为项目需要shiro做拦截所以如果只定义上面的话,shrio会将静态资源拦截在外面,所以要放开资源!

我们先 定义一个配置类去实现WebMvcConfigurer然后重写addResourceHandlers方法,WebMvcConfigurer是spring自身的一个拦截配置可以放开项目的静态资源

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
    registry.addResourceHandler("/favicon.ico").addResourceLocations("classpath:/META-INF/resources/");
    registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}

配置好了这些之后我们去shrio的配置类放开登录就可以访问knife4j文档啦!

defaultShiroFilterChainDefinition.addPathDefinition("/doc.html", "anon");
defaultShiroFilterChainDefinition.addPathDefinition("/webjars/**/**", "anon");
defaultShiroFilterChainDefinition.addPathDefinition("/swagger/**", "anon");
defaultShiroFilterChainDefinition.addPathDefinition( "/v2/**","anon");
defaultShiroFilterChainDefinition.addPathDefinition( "/static/**", "anon");
defaultShiroFilterChainDefinition.addPathDefinition("/swagger-resources/**", "anon");

然后重启项目访问自己的ip+端口+doc.html,下面是我的类似这种

 最后展现的效果!

 本人是一枚小萌新,如果有不对的地方希望各位大佬指正批评!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值