项目场景:
认证服务需要开发几个接口,发现怎么调用不管是正常接口,还是随便输只要是ip与端口正确的接口访问都是返回403。
问题描述:
虽然不管怎么访问都是403,但是控制台一点相关日志都没有打印
原因分析:
经过短暂思考排查,发现是pom文件引入了鉴权相关jar包:spring-cloud-starter-oauth2
所导致!,把这个包注释掉重新加载maven就可以正常访问接口了。但是,我是需要用到这个jar包的,下面提供解决方案!
解决方案:
方案一、移除jar
- 不使用spring-cloud-starter-oauth2。移除后重新加载maven,再重新启动项目
方案二、SpringSecurity接口过滤配置
- 项目中添加该配置类
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
//只有以/auth 开头的路由需要进行权限认证;其他路由不需要权限认证
http.requestMatchers()
.antMatchers("/auth/**")
.and().authorizeRequests()
.antMatchers("/**")
.authenticated();
}
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
- 添加后重新启动项目
测试验证:
- 可以看到已经成功访问到接口