Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Security允许任何请求通过_Spring_Security_Authentication_Header_Endpoint - Fatal编程技术网

Spring Security允许任何请求通过

Spring Security允许任何请求通过,spring,security,authentication,header,endpoint,Spring,Security,Authentication,Header,Endpoint,我正在用SpringBoot+SpringSecurity制作一个API。我对Spring Security“允许”任何请求通过有问题 发生的情况是,我有两个端点: users/register/app users/recoverpasswordbyemail 我正在用Postman测试它们,问题是如果我在应用程序启动后第一次调用其中一个端点时没有authorition标题或错误标题,它将不允许我进入,并给出一个401错误。但是,如果我使用正确的authorition标题再次调用另一个方法或相

我正在用SpringBoot+SpringSecurity制作一个API。我对Spring Security“允许”任何请求通过有问题

发生的情况是,我有两个端点:

users/register/app
users/recoverpasswordbyemail
我正在用Postman测试它们,问题是如果我在应用程序启动后第一次调用其中一个端点时没有
authorition
标题或错误标题,它将不允许我进入,并给出一个401错误。但是,如果我使用正确的
authorition
标题再次调用另一个方法或相同的方法,然后在不使用标题的情况下再次调用其中一个方法,它将允许我通过。我认为它不支持在没有auth头的情况下工作

我不确定这是因为我在输入正确的auth头时已经进行了某种“登录”,还是因为这是邮递员的问题。但我希望每次对其中一个端点的调用都会对用户进行检查

这是我的Spring配置文件:

@Configuration @EnableWebSecurity 
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
 @Autowired
 private UserServiceImpl userService;

 @Override
 protected void configure(HttpSecurity http) throws Exception {
     http
             .csrf().disable()
             .authorizeRequests()
             .antMatchers("/users/register/app", "/users/recoverpasswordbyemail")
             .hasAnyRole("ADMIN", "SADMIN")
             .and().httpBasic().authenticationEntryPoint(new NotAuthorizedExceptionMapper())
             .and().sessionManagement().disable();
 }

 @Override
 public void configure(AuthenticationManagerBuilder builder) throws Exception {
     builder.userDetailsService(userService);
 }

 @Bean
 public PasswordEncoder passwordEncoder() {
     return new BCryptPasswordEncoder();
 }

}
此外,每次发生这种情况时,如果存在,则用户不会获得第一个(但当我有错误的身份验证头时会获得第一个),或者与我的用户服务中的内容类似:

@Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        System.out.println("Hi");
        User user = userRepository.findById(username).get();

        return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), user.getRole());
    }
这是我用来调用端点的URL:

http://localhost:8680/ulises/usersserver/users/register/app
其中
/ulises/usersserver/
是servlet上下文

有人知道为什么会这样吗?我做了很多研究,但没有发现什么能解决这个问题


谢谢。

好的,尽管会话被禁用,但仍然创建了会话。我不明白为什么会发生这种情况,但使用

和().sessionManagement().sessionCreationPolicy(sessionCreationPolicy.STATELESS)

解决了我的问题