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);
测试结果结果成功: