web-dev-qa-db-ja.com

盗品のための401無許可のページ?

@ EnableSwagger2でswagger2を有効にします。ただし、「/ swagger-ui.html」をヒットしようとすると、最初に認証フィルターがヒットします。次に、認証チェックをバイパスするために次のコードを記述しました

_String resourcePath = new UrlPathHelper().getPathWithinApplication(httpRequest);
if ("/swagger-ui.html".equalsIgnoreCase(resourcePath)) {
     filterChain.doFilter(request, response);
}
_

filterChain.doFilter(request, response);がヒットしたことがわかります。ただし、デバッグを手放すと、以下の情報を含むページが返されます。

_Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Wed Apr 04 15:41:50 EDT 2018
There was an unexpected error (type=Unauthorized, status=401).
No message available
_

何か考えはありますか?

4
Laodao

configure(WebSecurity web)メソッドをオーバーライドするよりも、独自の_WebSecurityConfig extends WebSecurityConfigurerAdapter_を追加して、web.ignoring().antMatchers("/swagger-ui.html")ofcを@Configurationでそのクラスに注釈を付けることができると考えてください。

2
Georgi Stoyanov

Georgi Stoyanovが回答したように、多くのコードを追加するとホワイトラベルエラーページエラーが削除されましたが、一部のcssの読み込みで401の問題が発生したため、スワッガーUIホームページが空白になりました&jsファイル。 Springセキュリティを備えたSwagger-ui

また、私が言及したい重要な点は、私のスワッガーUIが上記のコードなしでWeblogicデプロイメントで機能しており(HttpSecurityオーバーライドのみで十分でした)、組み込みTomcatでアプリを実行している場合にのみ問題に直面していたことです。

Spring Bootバージョン:1.5.2.RELEASE

SpringFoxバージョン2.8.0

そのため、すべてのCSSファイルとJSファイルもロードするために、コードを変更する必要がありました リンクされた質問で私が回答したように

0
Sabir Khan

私は私のプロジェクトで同じ問題を抱えていました、最初に構成ファイルをプロジェクトに追加します

package bla.bla.conf;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class Swagger2Config {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2).select()
                .apis(RequestHandlerSelectors
                        .basePackage("bla.bla.controllers"))
                .paths(PathSelectors.any())
                .build();
    }

}

そしてWebSecurityConfigを追加

@Override
public void configure(WebSecurity web) throws Exception {
    web.ignoring().mvcMatchers(HttpMethod.OPTIONS, "/**");
    web.ignoring().mvcMatchers("/swagger-ui.html/**", "/configuration/**", "/swagger-resources/**", "/v2/api-docs","/webjars/**");
}

私の問題は修正されました

0