我有一個基於github項目的vaadin會話,正在開展spring安全項目。所有工作正常,直到我創建一個新的配置靜態類,我想指定SSL應該被要求的路徑。Spring Security + Vaadin Session No VaadinSession
這裏是我的項目和應用程序級的原來的工作狀態: https://github.com/czetus/dluznikApp/blob/master/src/main/java/com/danes/main/Application.java
添加了代碼Application.java到第一靜態類
public static class SecurityConfiguriation extends GlobalMethodSecurityConfiguration
@EnableWebSecurity
public static class WebSecurity extends WebSecurityConfigurerAdapter{
@Override
protected void configure(HttpSecurity http) throws Exception {
http.requiresChannel()
.antMatchers("/v1*").requiresSecure();
}
}
該項目編譯和部署wihtout任何錯誤。問題在我啓動localhost:8080時開始。我收到此處定義的例外:
java.lang.IllegalStateException: No VaadinSession bound to current thread
at com.danes.main.servlet.VaadinSessionSecurityContextHolderStrategy.getSession(VaadinSessionSecurityContextHolderStrategy.java:41) ~[classes/:na]
at com.danes.main.servlet.VaadinSessionSecurityContextHolderStrategy.clearContext(VaadinSessionSecurityContextHolderStrategy.java:12) ~[classes/:na]
at org.springframework.security.core.context.SecurityContextHolder.clearContext(SecurityContextHolder.java:73) ~[spring-security-core-4.2.3.RELEASE.jar:4.2.3.RELEASE]
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:180) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]
...
如果我刪除註釋@EnableWebSecurity,則不會有錯誤,並且ssl不起作用。
當我調試,我注意到的getSession在類VaadinSessionSecurityContextHolderStrategy.java援引方法
@Override
public void setContext(SecurityContext context) {
getSession().setAttribute(SecurityContext.class, context);
}
太早
所以我有什麼做的或者是有一些其他的方式來創建不這個配置類並獲得這個路徑(模式),以保護SSL?
我之所以使用它,是因爲我需要使用SpringSecurity身份驗證工作VaadinSession。 像這個例子中,我基於它: https://github.com/peholmst/SpringSecurityDemo/tree/master/hybrid-security –