swagger2は、ページのソリューションを取得することはできません

いいえ、私は学ぶことができ、背後にある、私は追いつくことができます;秋、私は立ち上がることができます。私がやります!

 

問題のシナリオ:springbootプロジェクトでフィルタを設定するには、またswagger2アドレスにアクセスすることができない見つけswagger2、無ポップアップページ、以下を参照してくださいを統合します。

フィルタ・コードは次の通りであります:

パブリック クラス JwtAuthenticationFilterは延びOncePerRequestFilter { 

    プライベート 静的 最終 PathMatcher pathMatcher = 新しいAntPathMatcherを(); 

    @Override 
    保護 ボイドdoFilterInternal(HttpServletRequestのリクエスト、HttpServletResponseの応答れるFilterChainフィルターチェーン)が
             スローServletExceptionが、IOExceptionが{ 

        場合(StringUtils.contains(request.getServletPath()、 "闊歩"  || StringUtils.contains(request.getServletPath()、「webjars "  || StringUtils.contains(request.getServletPath()、 "V2" )){
            IF(へrequest.getServerName()に等しい( "ローカルホスト" )){ 
                filterChain.doFilter(リクエスト、レスポンス); 
            } 
        } {
             IF (isExceededUrl(リクエスト)){
                 // 登録要求直接放出ログ
                filterChain.doFilter(リクエストを、応答); 
            } {
                 // 取得Authorizationリクエストヘッダの 
                文字列tokenHeader = request.getHeader(TokenConstants.TOKEN_HEADER); 

                // 返される存在しないトークン
                IF!(StringUtils.isBlank(tokenHeader)|| = tokenHeader.startsWith(TokenConstants .TOKEN_PREFIX)){
                    アウトServletOutputStreamをresponse.getOutputStreamを(); 
                    out.print(ResponseConstants.TOKEN_IS_INVALID)。
                    out.close(); 
                    返します
                } 

                // トークン过期返回
                場合(JwtUtil.isExpiration(JwtUtil.getTokenByHeader(tokenHeader))){ 
                    ServletOutputStreamをアウト = response.getOutputStream()。
                    out.print(ResponseConstants.TOKEN_IS_INVALID)。
                    out.close(); 
                    返します
                } 

                文字列UID = "" ;
                してみてください{
                    UID =を 
        }JwtUtil.getUidByTokenHeader(request.getHeader(TokenConstants.TOKEN_HEADER))。
                } キャッチ(例外e){ 
                    e.printStackTrace(); 
                } 
                request.setAttribute( "UID" 、UID)。

                HttpServletRequestのREQ = (HttpServletRequestの)要求。
                MutableHttpServletRequest mutableRequest = 新しいMutableHttpServletRequest(REQ)。
                mutableRequest.putHeader( "UID" 、UID)。
                filterChain.doFilter(リクエスト、レスポンス)。
            } 
    } 

    / **
     * @description:。私達は、アドレス/ API APIはチェックJWTは、そうでない場合は、ログイン/ログインJWTの始まりでも、URL一致参照を行う必要があります
     *                      Https://www.cnblogs.com/zhangxiaoguang/p/5855113.html 
     * @param リクエスト
     * @return ブール
      * / 
    プライベート ブールisProtectedUrl(HttpServletRequestのリクエスト){
         返す pathMatcher.match( "/ **" 、request.getServletPath()); 
    } 

    / ** 
     * @description:登録はチェックしないでログ
     * @param リクエスト
     * @returnのブール
      * / 
    プライベート・ ブールisExceededUrl(HttpServletRequestのリクエスト){
         戻り pathMatcher.match( "/ユーザ/ログイン" 、request.getServletPath())
                 || pathMatcher.match( "/ユーザ/登録" 、request.getServletPath())。
    } 

}

 

問題はアクセスすることはできません解決するために、あなたはの静的リソースマッピングswagger2を追加する必要があります。

 

@Configuration
 パブリック クラス WebMvcConfigは実装WebMvcConfigurer { 

    @Override 
    公共 ボイドaddResourceHandlers(ResourceHandlerRegistryレジストリ){ 
        registry.addResourceHandler( "/static/**").addResourceLocations("classpath:/static/" )。
        registry.addResourceHandler( "/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/" ); 
        registry.addResourceHandler( "/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/" ); 
        WebMvcConfigurer。スーパー.addResourceHandlers(レジストリ);

 

 

上記の内容はスプレーしないで好きではない、ビューの唯一の個人的なポイントを表します...

 

おすすめ

転載: www.cnblogs.com/newbest/p/11494086.html
おすすめ