Class AbstractConfiguredSecurityBuilder<O,B extends SecurityBuilder<O>>
java.lang.Object
org.springframework.security.config.annotation.AbstractSecurityBuilder<O>
org.springframework.security.config.annotation.AbstractConfiguredSecurityBuilder<O,B>
- Type Parameters:
O
- The object that this builder returnsB
- The type of this builder (that is returned by the base class)
- All Implemented Interfaces:
SecurityBuilder<O>
- Direct Known Subclasses:
AuthenticationManagerBuilder
,HttpSecurity
,WebSecurity
public abstract class AbstractConfiguredSecurityBuilder<O,B extends SecurityBuilder<O>>
extends AbstractSecurityBuilder<O>
A base SecurityBuilder
that allows SecurityConfigurer
to be applied to
it. This makes modifying the SecurityBuilder
a strategy that can be customized
and broken up into a number of SecurityConfigurer
objects that have more
specific goals than that of the SecurityBuilder
.
For example, a SecurityBuilder
may build an DelegatingFilterProxy
, but
a SecurityConfigurer
might populate the SecurityBuilder
with the
filters necessary for session management, form based login, authorization, etc.
- See Also:
-
Constructor Summary
ModifierConstructorDescriptionprotected
AbstractConfiguredSecurityBuilder
(ObjectPostProcessor<Object> objectPostProcessor) Creates a new instance with the providedObjectPostProcessor
.protected
AbstractConfiguredSecurityBuilder
(ObjectPostProcessor<Object> objectPostProcessor, boolean allowConfigurersOfSameType) Creates a new instance with the providedObjectPostProcessor
. -
Method Summary
Modifier and TypeMethodDescription<C extends SecurityConfigurerAdapter<O,
B>>
Capply
(C configurer) Applies aSecurityConfigurerAdapter
to thisSecurityBuilder
and invokesSecurityConfigurerAdapter.setBuilder(SecurityBuilder)
.protected void
Invoked prior to invoking eachSecurityConfigurer.configure(SecurityBuilder)
method.protected void
Invoked prior to invoking eachSecurityConfigurer.init(SecurityBuilder)
method.protected final O
doBuild()
Executes the build using theSecurityConfigurer
's that have been applied using the following steps: InvokesbeforeInit()
for any subclass to hook into InvokesSecurityConfigurer.init(SecurityBuilder)
for anySecurityConfigurer
that was applied to this builder. InvokesbeforeConfigure()
for any subclass to hook into InvokesperformBuild()
which actually builds the Object<C extends SecurityConfigurer<O,
B>>
CgetConfigurer
(Class<C> clazz) Gets theSecurityConfigurer
by its class name ornull
if not found.<C extends SecurityConfigurer<O,
B>>
List<C>getConfigurers
(Class<C> clazz) Gets all theSecurityConfigurer
instances by its class name or an empty List if not found.Similar toAbstractSecurityBuilder.build()
andAbstractSecurityBuilder.getObject()
but checks the state to determine ifAbstractSecurityBuilder.build()
needs to be called first.<C> C
getSharedObject
(Class<C> sharedType) Gets a shared Object.Gets the shared objectsobjectPostProcessor
(ObjectPostProcessor<Object> objectPostProcessor) Specifies theObjectPostProcessor
to use.protected abstract O
Subclasses must implement this method to build the object that is being returned.protected <P> P
postProcess
(P object) Performs post processing of an object.<C extends SecurityConfigurer<O,
B>>
CremoveConfigurer
(Class<C> clazz) Removes and returns theSecurityConfigurer
by its class name ornull
if not found.<C extends SecurityConfigurer<O,
B>>
List<C>removeConfigurers
(Class<C> clazz) Removes all theSecurityConfigurer
instances by its class name or an empty List if not found.<C> void
setSharedObject
(Class<C> sharedType, C object) Sets an object that is shared by multipleSecurityConfigurer
.Methods inherited from class org.springframework.security.config.annotation.AbstractSecurityBuilder
build, getObject
-
Constructor Details
-
AbstractConfiguredSecurityBuilder
Creates a new instance with the providedObjectPostProcessor
. This post processor must support Object since there are many types of objects that may be post processed.- Parameters:
objectPostProcessor
- theObjectPostProcessor
to use
-
AbstractConfiguredSecurityBuilder
protected AbstractConfiguredSecurityBuilder(ObjectPostProcessor<Object> objectPostProcessor, boolean allowConfigurersOfSameType) Creates a new instance with the providedObjectPostProcessor
. This post processor must support Object since there are many types of objects that may be post processed.- Parameters:
objectPostProcessor
- theObjectPostProcessor
to useallowConfigurersOfSameType
- if true, will not override otherSecurityConfigurer
's when performing apply
-
-
Method Details
-
getOrBuild
Similar toAbstractSecurityBuilder.build()
andAbstractSecurityBuilder.getObject()
but checks the state to determine ifAbstractSecurityBuilder.build()
needs to be called first.- Returns:
- the result of
AbstractSecurityBuilder.build()
orAbstractSecurityBuilder.getObject()
. If an error occurs while building, returns null.
-
apply
Applies aSecurityConfigurerAdapter
to thisSecurityBuilder
and invokesSecurityConfigurerAdapter.setBuilder(SecurityBuilder)
.- Parameters:
configurer
-- Returns:
- the
SecurityConfigurerAdapter
for further customizations - Throws:
Exception
-
apply
Applies aSecurityConfigurer
to thisSecurityBuilder
overriding anySecurityConfigurer
of the exact same class. Note that object hierarchies are not considered.- Parameters:
configurer
-- Returns:
- the
SecurityConfigurerAdapter
for further customizations - Throws:
Exception
-
getConfigurers
Gets all theSecurityConfigurer
instances by its class name or an empty List if not found. Note that object hierarchies are not considered.- Parameters:
clazz
- theSecurityConfigurer
class to look for- Returns:
- a list of
SecurityConfigurer
s for further customization
-
removeConfigurers
Removes all theSecurityConfigurer
instances by its class name or an empty List if not found. Note that object hierarchies are not considered.- Parameters:
clazz
- theSecurityConfigurer
class to look for- Returns:
- a list of
SecurityConfigurer
s for further customization
-
getConfigurer
Gets theSecurityConfigurer
by its class name ornull
if not found. Note that object hierarchies are not considered.- Parameters:
clazz
-- Returns:
- the
SecurityConfigurer
for further customizations
-
removeConfigurer
Removes and returns theSecurityConfigurer
by its class name ornull
if not found. Note that object hierarchies are not considered.- Parameters:
clazz
-- Returns:
-
objectPostProcessor
Specifies theObjectPostProcessor
to use.- Parameters:
objectPostProcessor
- theObjectPostProcessor
to use. Cannot be null- Returns:
- the
SecurityBuilder
for further customizations
-
postProcess
protected <P> P postProcess(P object) Performs post processing of an object. The default is to delegate to theObjectPostProcessor
.- Parameters:
object
- the Object to post process- Returns:
- the possibly modified Object to use
-
doBuild
Executes the build using theSecurityConfigurer
's that have been applied using the following steps:- Invokes
beforeInit()
for any subclass to hook into - Invokes
SecurityConfigurer.init(SecurityBuilder)
for anySecurityConfigurer
that was applied to this builder. - Invokes
beforeConfigure()
for any subclass to hook into - Invokes
performBuild()
which actually builds the Object
- Specified by:
doBuild
in classAbstractSecurityBuilder<O>
- Returns:
- the object that should be returned by
AbstractSecurityBuilder.build()
. - Throws:
Exception
- if an error occurs
- Invokes
-
beforeInit
Invoked prior to invoking eachSecurityConfigurer.init(SecurityBuilder)
method. Subclasses may override this method to hook into the lifecycle without using aSecurityConfigurer
.- Throws:
Exception
-
beforeConfigure
Invoked prior to invoking eachSecurityConfigurer.configure(SecurityBuilder)
method. Subclasses may override this method to hook into the lifecycle without using aSecurityConfigurer
.- Throws:
Exception
-
performBuild
Subclasses must implement this method to build the object that is being returned.- Returns:
- the Object to be buit or null if the implementation allows it
- Throws:
Exception
-