|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.acegisecurity.context.HttpSessionContextIntegrationFilter
public class HttpSessionContextIntegrationFilter
Populates the SecurityContextHolder with information obtained from the HttpSession.
The HttpSession will be queried to retrieve the SecurityContext that should be
stored against the SecurityContextHolder for the duration of the web request. At the end of the web
request, any updates made to the SecurityContextHolder will be persisted back to the
HttpSession by this filter.
If a valid SecurityContext cannot be obtained from the HttpSession for whatever
reason, a fresh SecurityContext will be created and used instead. The created object will be of the
instance defined by the setContext(Class) method (which defaults to SecurityContextImpl.
No HttpSession will be created by this filter if one does not already exist. If at the end of
the web request the HttpSession does not exist, a HttpSession will only be created
if the current contents of the SecurityContextHolder are not Object.equals(java.lang.Object) to a new instance of setContext(Class). This
avoids needless HttpSession creation, but automates the storage of changes made to the
SecurityContextHolder. There is one exception to this rule, that is if the forceEagerSessionCreation property is true, in which case sessions will always be created
irrespective of normal session-minimisation logic (the default is false, as this is resource intensive
and not recommended).
This filter will only execute once per request, to resolve servlet container (specifically Weblogic) incompatibilities.
If for whatever reason no HttpSession should ever be created (eg this filter is only
being used with Basic authentication or similar clients that will never present the same jsessionid
etc), the setAllowSessionCreation(boolean) should be set to false. Only do this if you really
need to conserve server memory and ensure all classes using the SecurityContextHolder are designed to
have no persistence of the SecurityContext between web requests. Please note that if forceEagerSessionCreation is true, the allowSessionCreation must also be
true (setting it to false will cause a startup time error).
This filter MUST be executed BEFORE any authentication processing mechanisms. Authentication processing
mechanisms (eg BASIC, CAS processing filters etc) expect the SecurityContextHolder to contain a valid
SecurityContext by the time they execute.
| Field Summary | |
|---|---|
static String |
ACEGI_SECURITY_CONTEXT_KEY
|
protected static Log |
logger
|
| Constructor Summary | |
|---|---|
HttpSessionContextIntegrationFilter()
|
|
| Method Summary | |
|---|---|
void |
afterPropertiesSet()
|
void |
destroy()
Does nothing. |
void |
doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
|
SecurityContext |
generateNewContext()
|
Class |
getContext()
|
void |
init(FilterConfig filterConfig)
Does nothing. |
boolean |
isAllowSessionCreation()
|
boolean |
isCloneFromHttpSession()
|
boolean |
isForceEagerSessionCreation()
|
void |
setAllowSessionCreation(boolean allowSessionCreation)
|
void |
setCloneFromHttpSession(boolean cloneFromHttpSession)
|
void |
setContext(Class secureContext)
|
void |
setForceEagerSessionCreation(boolean forceEagerSessionCreation)
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected static final Log logger
public static final String ACEGI_SECURITY_CONTEXT_KEY
| Constructor Detail |
|---|
public HttpSessionContextIntegrationFilter()
throws ServletException
ServletException| Method Detail |
|---|
public boolean isCloneFromHttpSession()
public void setCloneFromHttpSession(boolean cloneFromHttpSession)
public void afterPropertiesSet()
throws Exception
afterPropertiesSet in interface InitializingBeanExceptionpublic void destroy()
destroy in interface Filter
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException,
ServletException
doFilter in interface FilterIOException
ServletException
public SecurityContext generateNewContext()
throws ServletException
ServletExceptionpublic Class getContext()
public void init(FilterConfig filterConfig)
throws ServletException
init in interface FilterfilterConfig - ignored
ServletException - ignoredpublic boolean isAllowSessionCreation()
public boolean isForceEagerSessionCreation()
public void setAllowSessionCreation(boolean allowSessionCreation)
public void setContext(Class secureContext)
public void setForceEagerSessionCreation(boolean forceEagerSessionCreation)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||