|
@@ -68,6 +68,7 @@ import org.springframework.security.web.savedrequest.RequestCacheAwareFilter;
|
|
|
import org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter;
|
|
|
import org.springframework.security.web.session.ConcurrentSessionFilter;
|
|
|
import org.springframework.security.web.session.DisableEncodeUrlFilter;
|
|
|
+import org.springframework.security.web.session.ForceEagerSessionCreationFilter;
|
|
|
import org.springframework.security.web.session.SessionManagementFilter;
|
|
|
import org.springframework.security.web.session.SimpleRedirectInvalidSessionStrategy;
|
|
|
import org.springframework.security.web.session.SimpleRedirectSessionInformationExpiredStrategy;
|
|
@@ -147,6 +148,8 @@ class HttpConfigurationBuilder {
|
|
|
|
|
|
private BeanDefinition securityContextPersistenceFilter;
|
|
|
|
|
|
+ private BeanDefinition forceEagerSessionCreationFilter;
|
|
|
+
|
|
|
private BeanReference contextRepoRef;
|
|
|
|
|
|
private BeanReference sessionRegistryRef;
|
|
@@ -206,6 +209,7 @@ class HttpConfigurationBuilder {
|
|
|
String createSession = element.getAttribute(ATT_CREATE_SESSION);
|
|
|
this.sessionPolicy = !StringUtils.hasText(createSession) ? SessionCreationPolicy.IF_REQUIRED
|
|
|
: createPolicy(createSession);
|
|
|
+ createForceEagerSessionCreationFilter();
|
|
|
createDisableEncodeUrlFilter();
|
|
|
createCsrfFilter();
|
|
|
createSecurityPersistence();
|
|
@@ -303,6 +307,12 @@ class HttpConfigurationBuilder {
|
|
|
return Boolean.parseBoolean(explicitSaveAttr);
|
|
|
}
|
|
|
|
|
|
+ private void createForceEagerSessionCreationFilter() {
|
|
|
+ if (this.sessionPolicy == SessionCreationPolicy.ALWAYS) {
|
|
|
+ this.forceEagerSessionCreationFilter = new RootBeanDefinition(ForceEagerSessionCreationFilter.class);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private void createSecurityContextPersistenceFilter() {
|
|
|
BeanDefinitionBuilder scpf = BeanDefinitionBuilder.rootBeanDefinition(SecurityContextPersistenceFilter.class);
|
|
|
switch (this.sessionPolicy) {
|
|
@@ -767,6 +777,10 @@ class HttpConfigurationBuilder {
|
|
|
|
|
|
List<OrderDecorator> getFilters() {
|
|
|
List<OrderDecorator> filters = new ArrayList<>();
|
|
|
+ if (this.forceEagerSessionCreationFilter != null) {
|
|
|
+ filters.add(new OrderDecorator(this.forceEagerSessionCreationFilter,
|
|
|
+ SecurityFilters.FORCE_EAGER_SESSION_FILTER));
|
|
|
+ }
|
|
|
if (this.disableUrlRewriteFilter != null) {
|
|
|
filters.add(new OrderDecorator(this.disableUrlRewriteFilter, SecurityFilters.DISABLE_ENCODE_URL_FILTER));
|
|
|
}
|