所以我有一些Spring Boot Security代码,出于某种原因,虽然我的STATELESS角度应用程序发送了一个GET请求。 Spring Security似乎得到了两个请求,并在两个线程上以相同的毫秒开始处理它们(然后我最终得到一个唯一的用户约束,因为它试图将相同的用户两次添加到数据库中)。
我的弹簧安全配置是否出现双重请求? Spring Security应该基本上检查来自无状态应用程序的所有请求是否为X-AUTH-TOKEN。
http
.authenticationProvider(authenticationProvider)
.addFilterBefore(new HeaderAuthenticationFilter(), BasicAuthenticationFilter.class)
//.addFilterBefore(new CorsFilter(request -> corsConfiguration), HeaderAuthenticationFilter.class)
.authorizeRequests()
.antMatchers("/").permitAll()
.anyRequest()
.authenticated()
.and()
.csrf().disable()
.exceptionHandling().accessDeniedPage("/error");
基本上HeaderAuthenticationProvider和HeaderAuthenticationFilter用于检查X-AUTH-TOKEN。
2017-05-17 19:46:41.868 INFO 5 --- [nio-8443-exec-8] o.a.c.util.SessionIdGeneratorBase : Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [13,338] milliseconds.
2017-05-17 19:46:41.868 INFO 5 --- [nio-8443-exec-1] o.a.c.util.SessionIdGeneratorBase : Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [8,315] milliseconds.
2017-05-17 19:46:41.872 INFO 5 --- [nio-8443-exec-8] m.d.f.a.HeaderAuthenticationProvider : Authenticate:: Authorization Token: bf6bbb6f5a850fb7b152b5e143534e5bd13a96abd3250d2
2017-05-17 19:46:41.872 INFO 5 --- [nio-8443-exec-1] m.d.f.a.HeaderAuthenticationProvider : Authenticate:: Authorization Token: bf6bbb6f5a850fb7b152b5e143534e5bd13a96abd3250d2
答案 0 :(得分:0)
不确定您是否还有此问题。之前我遇到过类似的问题,我的问题是由于Spring开始了两个DelegateFilter
链,一个默认链接和一个自定义链。相反,每个过滤器都执行了两次。从您的日志中看起来您可能有类似的问题。我解决它的方法是让我的过滤器扩展OncePerRequestFilter
。