【发布时间】:2018-10-08 05:38:29
【问题描述】:
我想为我的 SpringBoot 应用程序安装 SWAGER。似乎 JWT 不授予对 swagger URL 的访问权限。
我正在尝试通过 url localhost:8088/swagger-ui.html 达到此目的
这里是 SwaggerConfig 类
@EnableSwagger2
@Configuration
public class SwaggerConfig {
@Bean
public Docket productApi() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("Path.to.my.controller"))
.build();
}
}
我还试图从link 添加 WebAppConfig 和下一个内容
@Configuration
@EnableWebMvc
public class WebAppConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
并尝试设置忽略url:
@Configuration
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/resources/**");
}
}
这个版本的代码可以从 swagger url 自动重定向到“localhost:8088/login”。但下一个只返回空页面
更新
web.ignoring().antMatchers("/", "/configuration/ui", "/swagger-resources", "/configuration/security", "/swagger-ui.html", "/webjars/**");
间隙中的网址是我在调试问题时看到的网址。这个 url 是由 swagger 调用的。
更新部分结束
主类
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
TimeZone.setDefault(TimeZone.getTimeZone("Etc/UTC"));
SpringApplication app = new SpringApplication(Application.class);
app.run();
}
@Bean
@Autowired
public FilterRegistrationBean jwtFilterRegistration(JwtUtil jwtUtil, UserService userService) {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new JwtFilter(jwtUtil, userService));
filterRegistrationBean.addUrlPatterns("/*");
// ordering in the filter chain
filterRegistrationBean.setOrder(1);
return filterRegistrationBean;
}
// Request Interceptor for checking permission with custom annotation.
@Bean
public MappedInterceptor PermissionHandlerInterceptor() {
return new MappedInterceptor(null, new PermissionHandlerInterceptor());
}
}
Pom xml 包含所有需要的依赖项。当我在 Main 类 jwt 方法中发表评论时,我可以访问 swagger。所以我得出了JWT中的问题的结论。 如果需要一些额外的信息,我会添加。
更新
起初 swagger-url 给白标页面一个错误“未授权” 在对代码进行一些操作后,它会给出空白页。
【问题讨论】:
-
不确定,打错了,你的链接:localhost:8088/swagger-ui.hmtl,检查html部分,否则可以检查你的代码
-
我更新了一点。是的,这是一个错字
标签: java spring-boot jwt swagger