Vaadin + SpringBoot集成和SecurityContextHolder.getContext()为空

时间:2015-11-05 09:37:45

标签: spring-security spring-boot vaadin vaadin7

我使用基于https://vaadin.com/spring的SpringBoot的VAADIN。除了身份验证之外,工作正常。我使用基于SpringBoot的SpringSecurity java配置工作正常,SecurityContextHolder.getContext().getAuthentication()在VaadinUI中为我返回当前用户。我的配置非常简单:

  http.authorizeRequests()
  .antMatchers("/*").authenticated().and().httpBasic()

问题是SecurityContextHolder.getContext().getAuthentication()仅在显示VaadinUI时为第一个请求返回正确的值。然后,任何后续的Vaadin请求(例如按钮单击)都会为SecurityContextHolder.getContext()。getAuthentication()返回null。知道如何让它按预期工作吗?

2 个答案:

答案 0 :(得分:0)

这是因为Vaadin处理请求的方式。它不使用DispatcherServlet,您可能需要使用RequestContextListener(或RequestContextFilter)来启用请求和会话范围。

看看discussion about a related topic here

答案 1 :(得分:0)

确保扩展WebSecurityConfigurerAdapter的@Configuration类使用@EnableWebSecurity进行注释。