Spring Security无法调用接口错误的问题解决
作者:唐僧爱吃唐僧肉
记录一下之前在写程序的时候遇到的问题,Spring Security无法调用接口错误的问题,本文就来介绍一下解决方法,感兴趣的可以了解一下
之前在写程序的时候,发现有个接口使用postmapping发送请求一直无法进行调用
@PostMapping("/user/login") public ResponseResult login(User user){ //登录,这里登录的时候需要传入用户名和密码 System.out.println("user = "+user.toString()); return loginService.login(user); //调用LoginServiceImpl中的login方法 }
并且返回的一直是forbidden401,应该是没有权限,但是奇怪的是,我在SecurityConfig之中权限已经打开了
public class SecurityConfig extends WebSecurityConfigurerAdapter { @Bean public PasswordEncoder passwordEncoder(){ //只需要把BCryptPasswordEncoder对象注入Spring容器中 //SpringSecurity就会使用PasswordEncoder来进行校验 return new BCryptPasswordEncoder(); } //自定义AuthenticationManager @Override protected void configure(HttpSecurity http) throws Exception { System.out.println("###begin configure"); http //关闭csrf .csrf().disable() //不通过Session获取SecurityContext .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) .and() .authorizeRequests() //对于登录接口允许匿名访问 .antMatchers("/user/login").anonymous() //除上面外所有请求需要鉴权认证 .anyRequest().authenticated(); } //调用 //暴露自定义的AuthenticationManager @Bean @Override public AuthenticationManager authenticationManagerBean() throws Exception{ return super.authenticationManagerBean(); } }
经过排查之后发现,这里的SecurityConfig上面没有加上@Configuration这个注解,导致SecurityConcig没有被注入到Spring的容器之中,因此报错
ps:如果发现传入的User结果为null,尝试着在参数前面加入@RequestBody这一个标签
@PostMapping("/user/login") public ResponseResult login(@RequestBody User user){ //登录,这里登录的时候需要传入用户名和密码 return loginService.login(user); //调用LoginServiceImpl中的login方法 }
到此这篇关于Spring Security无法调用接口错误的问题解决的文章就介绍到这了,更多相关Spring Security无法调用接口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!