Spring Security允许任何请求通过
我正在用SpringBoot+SpringSecurity制作一个API。我对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标题再次调用另一个方法或相
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)代码>
解决了我的问题