Class AbstractSecurityWebApplicationInitializer
- java.lang.Object
-
- org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer
-
- All Implemented Interfaces:
org.springframework.web.WebApplicationInitializer
public abstract class AbstractSecurityWebApplicationInitializer extends java.lang.Object implements org.springframework.web.WebApplicationInitializer
Registers theDelegatingFilterProxy
to use the springSecurityFilterChain before any other registeredFilter
. When used withAbstractSecurityWebApplicationInitializer(Class...)
, it will also register aContextLoaderListener
. When used withAbstractSecurityWebApplicationInitializer()
, this class is typically used in addition to a subclass ofAbstractContextLoaderInitializer
.By default the
DelegatingFilterProxy
is registered without support, but can be enabled by overridingisAsyncSecuritySupported()
andgetSecurityDispatcherTypes()
.Additional configuration before and after the springSecurityFilterChain can be added by overriding
afterSpringSecurityFilterChain(ServletContext)
.Caveats
Subclasses of AbstractDispatcherServletInitializer will register their filters before any other
Filter
. This means that you will typically want to ensure subclasses of AbstractDispatcherServletInitializer are invoked first. This can be done by ensuring theOrder
orOrdered
of AbstractDispatcherServletInitializer are sooner than subclasses ofAbstractSecurityWebApplicationInitializer
.
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
DEFAULT_FILTER_NAME
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractSecurityWebApplicationInitializer()
Creates a new instance that assumes the Spring Security configuration is loaded by some other means than this class.protected
AbstractSecurityWebApplicationInitializer(java.lang.Class<?>... configurationClasses)
Creates a new instance that will instantiate theContextLoaderListener
with the specified classes.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
afterSpringSecurityFilterChain(javax.servlet.ServletContext servletContext)
Invoked after the springSecurityFilterChain is added.protected void
appendFilters(javax.servlet.ServletContext servletContext, javax.servlet.Filter... filters)
Inserts the providedFilter
s after existingFilter
s using default generated names,getSecurityDispatcherTypes()
, andisAsyncSecuritySupported()
.protected void
beforeSpringSecurityFilterChain(javax.servlet.ServletContext servletContext)
Invoked before the springSecurityFilterChain is added.protected boolean
enableHttpSessionEventPublisher()
Override this ifHttpSessionEventPublisher
should be added as a listener.protected java.lang.String
getDispatcherWebApplicationContextSuffix()
Return the <servlet-name> to use the DispatcherServlet'sWebApplicationContext
to find theDelegatingFilterProxy
or null to use the parentApplicationContext
.protected java.util.EnumSet<javax.servlet.DispatcherType>
getSecurityDispatcherTypes()
Get theDispatcherType
for the springSecurityFilterChain.protected java.util.Set<javax.servlet.SessionTrackingMode>
getSessionTrackingModes()
Determines how a session should be tracked.protected void
insertFilters(javax.servlet.ServletContext servletContext, javax.servlet.Filter... filters)
Inserts the providedFilter
s before existingFilter
s using default generated names,getSecurityDispatcherTypes()
, andisAsyncSecuritySupported()
.protected boolean
isAsyncSecuritySupported()
Determine if the springSecurityFilterChain should be marked as supporting asynch.void
onStartup(javax.servlet.ServletContext servletContext)
-
-
-
Field Detail
-
DEFAULT_FILTER_NAME
public static final java.lang.String DEFAULT_FILTER_NAME
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
AbstractSecurityWebApplicationInitializer
protected AbstractSecurityWebApplicationInitializer()
Creates a new instance that assumes the Spring Security configuration is loaded by some other means than this class. For example, a user might create aContextLoaderListener
using a subclass ofAbstractContextLoaderInitializer
.- See Also:
ContextLoaderListener
-
AbstractSecurityWebApplicationInitializer
protected AbstractSecurityWebApplicationInitializer(java.lang.Class<?>... configurationClasses)
Creates a new instance that will instantiate theContextLoaderListener
with the specified classes.- Parameters:
configurationClasses
-
-
-
Method Detail
-
onStartup
public final void onStartup(javax.servlet.ServletContext servletContext)
- Specified by:
onStartup
in interfaceorg.springframework.web.WebApplicationInitializer
-
enableHttpSessionEventPublisher
protected boolean enableHttpSessionEventPublisher()
Override this ifHttpSessionEventPublisher
should be added as a listener. This should be true, if session management has specified a maximum number of sessions.- Returns:
- true to add
HttpSessionEventPublisher
, else false
-
insertFilters
protected final void insertFilters(javax.servlet.ServletContext servletContext, javax.servlet.Filter... filters)
Inserts the providedFilter
s before existingFilter
s using default generated names,getSecurityDispatcherTypes()
, andisAsyncSecuritySupported()
.- Parameters:
servletContext
- theServletContext
to usefilters
- theFilter
s to register
-
appendFilters
protected final void appendFilters(javax.servlet.ServletContext servletContext, javax.servlet.Filter... filters)
Inserts the providedFilter
s after existingFilter
s using default generated names,getSecurityDispatcherTypes()
, andisAsyncSecuritySupported()
.- Parameters:
servletContext
- theServletContext
to usefilters
- theFilter
s to register
-
getSessionTrackingModes
protected java.util.Set<javax.servlet.SessionTrackingMode> getSessionTrackingModes()
Determines how a session should be tracked. By default,SessionTrackingMode.COOKIE
is used.Note that
SessionTrackingMode.URL
is intentionally omitted to help protected against session fixation attacks.SessionTrackingMode.SSL
is omitted because SSL configuration is required for this to work.Subclasses can override this method to make customizations.
- Returns:
-
getDispatcherWebApplicationContextSuffix
protected java.lang.String getDispatcherWebApplicationContextSuffix()
Return the <servlet-name> to use the DispatcherServlet'sWebApplicationContext
to find theDelegatingFilterProxy
or null to use the parentApplicationContext
.For example, if you are using AbstractDispatcherServletInitializer or AbstractAnnotationConfigDispatcherServletInitializer and using the provided Servlet name, you can return "dispatcher" from this method to use the DispatcherServlet's
WebApplicationContext
.- Returns:
- the <servlet-name> of the DispatcherServlet to use its
WebApplicationContext
or null (default) to use the parentApplicationContext
.
-
beforeSpringSecurityFilterChain
protected void beforeSpringSecurityFilterChain(javax.servlet.ServletContext servletContext)
Invoked before the springSecurityFilterChain is added.- Parameters:
servletContext
- theServletContext
-
afterSpringSecurityFilterChain
protected void afterSpringSecurityFilterChain(javax.servlet.ServletContext servletContext)
Invoked after the springSecurityFilterChain is added.- Parameters:
servletContext
- theServletContext
-
getSecurityDispatcherTypes
protected java.util.EnumSet<javax.servlet.DispatcherType> getSecurityDispatcherTypes()
Get theDispatcherType
for the springSecurityFilterChain.- Returns:
-
isAsyncSecuritySupported
protected boolean isAsyncSecuritySupported()
Determine if the springSecurityFilterChain should be marked as supporting asynch. Default is true.- Returns:
- true if springSecurityFilterChain should be marked as supporting asynch
-
-