Swagger访问401错误

2020-06-12

问题描述:

下载了一个开源系统ruoyi,里面自带swagger,但是访问的时候提示401错误。

"msg": "请求访问:/test/user/1,认证失败,无法访问系统资源", "code": 401

两个方式解决:
1.在Securityconfig里增加过滤的路径
这里说明一下,新增加的swagger control路径是 /srs/v1,swqgger配置的路径默认自带前缀/dev-api,加这个过滤路径的时候前缀不带。

    protected void configure(HttpSecurity httpSecurity) throws Exception
        httpSecurity
                // CRSF禁用,因为不使用session
                .csrf().disable()
                // 认证失败处理类
                .exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and()
                // 基于token,所以不需要session
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
                // 过滤请求
                .authorizeRequests()
                // 对于登录login 验证码captchaImage 允许匿名访问
                .antMatchers("/login", "/captchaImage").anonymous()
                .antMatchers(
                        HttpMethod.GET,
                        "/*.html",
                        "/**/*.html",
                        "/**/*.css",
                        "/**/*.js"
                ).permitAll()
                .antMatchers("/profile/**").anonymous()
                .antMatchers("/common/download**").anonymous()
                .antMatchers("/common/download/resource**").anonymous()
                .antMatchers("/swagger-ui.html").anonymous()
                .antMatchers("/swagger-resources/**").anonymous()
                .antMatchers("/webjars/**").anonymous()
                .antMatchers("/*/api-docs").anonymous()
                .antMatchers("/druid/**").anonymous()
                //增加srs的过滤名单 2020-6-2 dev-api/v1/srs/
                .antMatchers("/srs/v1/**").anonymous()
                // 除上面外的所有请求全部需要鉴权认证
                .anyRequest().authenticated()
                .and()
                .headers().frameOptions().disable();
        httpSecurity.logout().logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler);
        // 添加JWT filter
        httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);

测试结果结果成功: