blob: 2cdac4cfe1fad1f7b386f1fb217edc39b662e340 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="fr">
<head>
<!-- Generated by javadoc (1.8.0_201) on Thu Nov 14 09:20:45 CET 2019 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>AbstractShiroFilter (Apache Shiro 1.4.2 API)</title>
<meta name="date" content="2019-11-14">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="AbstractShiroFilter (Apache Shiro 1.4.2 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/AbstractShiroFilter.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/shiro/web/servlet/AbstractFilter.html" title="class in org.apache.shiro.web.servlet"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/shiro/web/servlet/AdviceFilter.html" title="class in org.apache.shiro.web.servlet"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/shiro/web/servlet/AbstractShiroFilter.html" target="_top">Frames</a></li>
<li><a href="AbstractShiroFilter.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#fields.inherited.from.class.org.apache.shiro.web.servlet.OncePerRequestFilter">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.shiro.web.servlet</div>
<h2 title="Class AbstractShiroFilter" class="title">Class AbstractShiroFilter</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../../org/apache/shiro/web/servlet/ServletContextSupport.html" title="class in org.apache.shiro.web.servlet">org.apache.shiro.web.servlet.ServletContextSupport</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../../org/apache/shiro/web/servlet/AbstractFilter.html" title="class in org.apache.shiro.web.servlet">org.apache.shiro.web.servlet.AbstractFilter</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../../org/apache/shiro/web/servlet/NameableFilter.html" title="class in org.apache.shiro.web.servlet">org.apache.shiro.web.servlet.NameableFilter</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../../org/apache/shiro/web/servlet/OncePerRequestFilter.html" title="class in org.apache.shiro.web.servlet">org.apache.shiro.web.servlet.OncePerRequestFilter</a></li>
<li>
<ul class="inheritance">
<li>org.apache.shiro.web.servlet.AbstractShiroFilter</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>javax.servlet.Filter, <a href="../../../../../org/apache/shiro/util/Nameable.html" title="interface in org.apache.shiro.util">Nameable</a></dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../../../org/apache/shiro/guice/web/GuiceShiroFilter.html" title="class in org.apache.shiro.guice.web">GuiceShiroFilter</a>, <a href="../../../../../org/apache/shiro/web/servlet/IniShiroFilter.html" title="class in org.apache.shiro.web.servlet">IniShiroFilter</a>, <a href="../../../../../org/apache/shiro/web/servlet/ShiroFilter.html" title="class in org.apache.shiro.web.servlet">ShiroFilter</a></dd>
</dl>
<hr>
<br>
<pre>public abstract class <a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.74">AbstractShiroFilter</a>
extends <a href="../../../../../org/apache/shiro/web/servlet/OncePerRequestFilter.html" title="class in org.apache.shiro.web.servlet">OncePerRequestFilter</a></pre>
<div class="block">Abstract base class that provides all standard Shiro request filtering behavior and expects
subclasses to implement configuration-specific logic (INI, XML, .properties, etc).
<p/>
Subclasses should perform configuration and construction logic in an overridden
<a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#init--"><code>init()</code></a> method implementation. That implementation should make available any constructed
<code>SecurityManager</code> and <code>FilterChainResolver</code> by calling
<a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#setSecurityManager-org.apache.shiro.web.mgt.WebSecurityManager-"><code>setSecurityManager(org.apache.shiro.web.mgt.WebSecurityManager)</code></a> and
<a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#setFilterChainResolver-org.apache.shiro.web.filter.mgt.FilterChainResolver-"><code>setFilterChainResolver(org.apache.shiro.web.filter.mgt.FilterChainResolver)</code></a> methods respectively.
<h3>Static SecurityManager</h3>
By default the <code>SecurityManager</code> instance enabled by this filter <em>will not</em> be enabled in static
memory via the <code>SecurityUtils.</code><a href="../../../../../org/apache/shiro/SecurityUtils.html#setSecurityManager-org.apache.shiro.mgt.SecurityManager-"><code>setSecurityManager</code></a>
method. Instead, it is expected that Subject instances will always be constructed on a request-processing thread
via instances of this Filter class.
<p/>
However, if you need to construct <code>Subject</code> instances on separate (non request-processing) threads, it might
be easiest to enable the SecurityManager to be available in static memory via the
<a href="../../../../../org/apache/shiro/SecurityUtils.html#getSecurityManager--"><code>SecurityUtils.getSecurityManager()</code></a> method. You can do this by additionally specifying an <code>init-param</code>:
<pre>
&lt;filter&gt;
... other config here ...
&lt;init-param&gt;
&lt;param-name&gt;staticSecurityManagerEnabled&lt;/param-name&gt;
&lt;param-value&gt;true&lt;/param-value&gt;
&lt;/init-param&gt;
&lt;/filter&gt;
</pre>
See the Shiro <a href="http://shiro.apache.org/subject.html">Subject documentation</a> for more information as to
if you would do this, particularly the sections on the <code>Subject.Builder</code> and Thread Association.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="http://shiro.apache.org/subject.html">Subject documentation</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.shiro.web.servlet.OncePerRequestFilter">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.shiro.web.servlet.<a href="../../../../../org/apache/shiro/web/servlet/OncePerRequestFilter.html" title="class in org.apache.shiro.web.servlet">OncePerRequestFilter</a></h3>
<code><a href="../../../../../org/apache/shiro/web/servlet/OncePerRequestFilter.html#ALREADY_FILTERED_SUFFIX">ALREADY_FILTERED_SUFFIX</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.shiro.web.servlet.AbstractFilter">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.shiro.web.servlet.<a href="../../../../../org/apache/shiro/web/servlet/AbstractFilter.html" title="class in org.apache.shiro.web.servlet">AbstractFilter</a></h3>
<code><a href="../../../../../org/apache/shiro/web/servlet/AbstractFilter.html#filterConfig">filterConfig</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colLast" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#AbstractShiroFilter--">AbstractShiroFilter</a></span>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../org/apache/shiro/web/mgt/WebSecurityManager.html" title="interface in org.apache.shiro.web.mgt">WebSecurityManager</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#createDefaultSecurityManager--">createDefaultSecurityManager</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../org/apache/shiro/web/subject/WebSubject.html" title="interface in org.apache.shiro.web.subject">WebSubject</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#createSubject-javax.servlet.ServletRequest-javax.servlet.ServletResponse-">createSubject</a></span>(javax.servlet.ServletRequest&nbsp;request,
javax.servlet.ServletResponse&nbsp;response)</code>
<div class="block">Creates a <a href="../../../../../org/apache/shiro/web/subject/WebSubject.html" title="interface in org.apache.shiro.web.subject"><code>WebSubject</code></a> instance to associate with the incoming request/response pair which will be used
throughout the request/response execution.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#doFilterInternal-javax.servlet.ServletRequest-javax.servlet.ServletResponse-javax.servlet.FilterChain-">doFilterInternal</a></span>(javax.servlet.ServletRequest&nbsp;servletRequest,
javax.servlet.ServletResponse&nbsp;servletResponse,
javax.servlet.FilterChain&nbsp;chain)</code>
<div class="block"><code>doFilterInternal</code> implementation that sets-up, executes, and cleans-up a Shiro-filtered request.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#executeChain-javax.servlet.ServletRequest-javax.servlet.ServletResponse-javax.servlet.FilterChain-">executeChain</a></span>(javax.servlet.ServletRequest&nbsp;request,
javax.servlet.ServletResponse&nbsp;response,
javax.servlet.FilterChain&nbsp;origChain)</code>
<div class="block">Executes a <code>FilterChain</code> for the given request.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>protected javax.servlet.FilterChain</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#getExecutionChain-javax.servlet.ServletRequest-javax.servlet.ServletResponse-javax.servlet.FilterChain-">getExecutionChain</a></span>(javax.servlet.ServletRequest&nbsp;request,
javax.servlet.ServletResponse&nbsp;response,
javax.servlet.FilterChain&nbsp;origChain)</code>
<div class="block">Returns the <code>FilterChain</code> to execute for the given request.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/shiro/web/filter/mgt/FilterChainResolver.html" title="interface in org.apache.shiro.web.filter.mgt">FilterChainResolver</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#getFilterChainResolver--">getFilterChainResolver</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/shiro/web/mgt/WebSecurityManager.html" title="interface in org.apache.shiro.web.mgt">WebSecurityManager</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#getSecurityManager--">getSecurityManager</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#init--">init</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#isHttpSessions--">isHttpSessions</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#isStaticSecurityManagerEnabled--">isStaticSecurityManagerEnabled</a></span>()</code>
<div class="block">Returns <code>true</code> if the constructed <a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#getSecurityManager--"><code>securityManager</code></a> reference should be bound
to static memory (via
<code>SecurityUtils.</code></div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#onFilterConfigSet--">onFilterConfigSet</a></span>()</code>
<div class="block">Template method to be overridden by subclasses to perform initialization logic at start-up.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>protected javax.servlet.ServletRequest</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#prepareServletRequest-javax.servlet.ServletRequest-javax.servlet.ServletResponse-javax.servlet.FilterChain-">prepareServletRequest</a></span>(javax.servlet.ServletRequest&nbsp;request,
javax.servlet.ServletResponse&nbsp;response,
javax.servlet.FilterChain&nbsp;chain)</code>
<div class="block">Prepares the <code>ServletRequest</code> instance that will be passed to the <code>FilterChain</code> for request
processing.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>protected javax.servlet.ServletResponse</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#prepareServletResponse-javax.servlet.ServletRequest-javax.servlet.ServletResponse-javax.servlet.FilterChain-">prepareServletResponse</a></span>(javax.servlet.ServletRequest&nbsp;request,
javax.servlet.ServletResponse&nbsp;response,
javax.servlet.FilterChain&nbsp;chain)</code>
<div class="block">Prepares the <code>ServletResponse</code> instance that will be passed to the <code>FilterChain</code> for request
processing.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#setFilterChainResolver-org.apache.shiro.web.filter.mgt.FilterChainResolver-">setFilterChainResolver</a></span>(<a href="../../../../../org/apache/shiro/web/filter/mgt/FilterChainResolver.html" title="interface in org.apache.shiro.web.filter.mgt">FilterChainResolver</a>&nbsp;filterChainResolver)</code>&nbsp;</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#setSecurityManager-org.apache.shiro.web.mgt.WebSecurityManager-">setSecurityManager</a></span>(<a href="../../../../../org/apache/shiro/web/mgt/WebSecurityManager.html" title="interface in org.apache.shiro.web.mgt">WebSecurityManager</a>&nbsp;sm)</code>&nbsp;</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#setStaticSecurityManagerEnabled-boolean-">setStaticSecurityManagerEnabled</a></span>(boolean&nbsp;staticSecurityManagerEnabled)</code>
<div class="block">Sets if the constructed <a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#getSecurityManager--"><code>securityManager</code></a> reference should be bound
to static memory (via <code>SecurityUtils.</code></div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#updateSessionLastAccessTime-javax.servlet.ServletRequest-javax.servlet.ServletResponse-">updateSessionLastAccessTime</a></span>(javax.servlet.ServletRequest&nbsp;request,
javax.servlet.ServletResponse&nbsp;response)</code>
<div class="block">Updates any 'native' Session's last access time that might exist to the timestamp when this method is called.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>protected javax.servlet.ServletRequest</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#wrapServletRequest-javax.servlet.http.HttpServletRequest-">wrapServletRequest</a></span>(javax.servlet.http.HttpServletRequest&nbsp;orig)</code>
<div class="block">Wraps the original HttpServletRequest in a <a href="../../../../../org/apache/shiro/web/servlet/ShiroHttpServletRequest.html" title="class in org.apache.shiro.web.servlet"><code>ShiroHttpServletRequest</code></a>, which is required for supporting
Servlet Specification behavior backed by a <a href="../../../../../org/apache/shiro/subject/Subject.html" title="interface in org.apache.shiro.subject"><code>Subject</code></a> instance.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>protected javax.servlet.ServletResponse</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#wrapServletResponse-javax.servlet.http.HttpServletResponse-org.apache.shiro.web.servlet.ShiroHttpServletRequest-">wrapServletResponse</a></span>(javax.servlet.http.HttpServletResponse&nbsp;orig,
<a href="../../../../../org/apache/shiro/web/servlet/ShiroHttpServletRequest.html" title="class in org.apache.shiro.web.servlet">ShiroHttpServletRequest</a>&nbsp;request)</code>
<div class="block">Returns a new <a href="../../../../../org/apache/shiro/web/servlet/ShiroHttpServletResponse.html" title="class in org.apache.shiro.web.servlet"><code>ShiroHttpServletResponse</code></a> instance, wrapping the <code>orig</code> argument, in order to provide
correct URL rewriting behavior required by the Servlet Specification when using Shiro-based sessions (and not
Servlet Container HTTP-based sessions).</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.shiro.web.servlet.OncePerRequestFilter">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.shiro.web.servlet.<a href="../../../../../org/apache/shiro/web/servlet/OncePerRequestFilter.html" title="class in org.apache.shiro.web.servlet">OncePerRequestFilter</a></h3>
<code><a href="../../../../../org/apache/shiro/web/servlet/OncePerRequestFilter.html#doFilter-javax.servlet.ServletRequest-javax.servlet.ServletResponse-javax.servlet.FilterChain-">doFilter</a>, <a href="../../../../../org/apache/shiro/web/servlet/OncePerRequestFilter.html#getAlreadyFilteredAttributeName--">getAlreadyFilteredAttributeName</a>, <a href="../../../../../org/apache/shiro/web/servlet/OncePerRequestFilter.html#isEnabled--">isEnabled</a>, <a href="../../../../../org/apache/shiro/web/servlet/OncePerRequestFilter.html#isEnabled-javax.servlet.ServletRequest-javax.servlet.ServletResponse-">isEnabled</a>, <a href="../../../../../org/apache/shiro/web/servlet/OncePerRequestFilter.html#setEnabled-boolean-">setEnabled</a>, <a href="../../../../../org/apache/shiro/web/servlet/OncePerRequestFilter.html#shouldNotFilter-javax.servlet.ServletRequest-">shouldNotFilter</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.shiro.web.servlet.NameableFilter">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.shiro.web.servlet.<a href="../../../../../org/apache/shiro/web/servlet/NameableFilter.html" title="class in org.apache.shiro.web.servlet">NameableFilter</a></h3>
<code><a href="../../../../../org/apache/shiro/web/servlet/NameableFilter.html#getName--">getName</a>, <a href="../../../../../org/apache/shiro/web/servlet/NameableFilter.html#setName-java.lang.String-">setName</a>, <a href="../../../../../org/apache/shiro/web/servlet/NameableFilter.html#toStringBuilder--">toStringBuilder</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.shiro.web.servlet.AbstractFilter">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.shiro.web.servlet.<a href="../../../../../org/apache/shiro/web/servlet/AbstractFilter.html" title="class in org.apache.shiro.web.servlet">AbstractFilter</a></h3>
<code><a href="../../../../../org/apache/shiro/web/servlet/AbstractFilter.html#destroy--">destroy</a>, <a href="../../../../../org/apache/shiro/web/servlet/AbstractFilter.html#getFilterConfig--">getFilterConfig</a>, <a href="../../../../../org/apache/shiro/web/servlet/AbstractFilter.html#getInitParam-java.lang.String-">getInitParam</a>, <a href="../../../../../org/apache/shiro/web/servlet/AbstractFilter.html#init-javax.servlet.FilterConfig-">init</a>, <a href="../../../../../org/apache/shiro/web/servlet/AbstractFilter.html#setFilterConfig-javax.servlet.FilterConfig-">setFilterConfig</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.shiro.web.servlet.ServletContextSupport">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.shiro.web.servlet.<a href="../../../../../org/apache/shiro/web/servlet/ServletContextSupport.html" title="class in org.apache.shiro.web.servlet">ServletContextSupport</a></h3>
<code><a href="../../../../../org/apache/shiro/web/servlet/ServletContextSupport.html#getContextAttribute-java.lang.String-">getContextAttribute</a>, <a href="../../../../../org/apache/shiro/web/servlet/ServletContextSupport.html#getContextInitParam-java.lang.String-">getContextInitParam</a>, <a href="../../../../../org/apache/shiro/web/servlet/ServletContextSupport.html#getServletContext--">getServletContext</a>, <a href="../../../../../org/apache/shiro/web/servlet/ServletContextSupport.html#removeContextAttribute-java.lang.String-">removeContextAttribute</a>, <a href="../../../../../org/apache/shiro/web/servlet/ServletContextSupport.html#setContextAttribute-java.lang.String-java.lang.Object-">setContextAttribute</a>, <a href="../../../../../org/apache/shiro/web/servlet/ServletContextSupport.html#setServletContext-javax.servlet.ServletContext-">setServletContext</a>, <a href="../../../../../org/apache/shiro/web/servlet/ServletContextSupport.html#toString--">toString</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="AbstractShiroFilter--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>AbstractShiroFilter</h4>
<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.93">AbstractShiroFilter</a>()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getSecurityManager--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSecurityManager</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/shiro/web/mgt/WebSecurityManager.html" title="interface in org.apache.shiro.web.mgt">WebSecurityManager</a>&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.97">getSecurityManager</a>()</pre>
</li>
</ul>
<a name="setSecurityManager-org.apache.shiro.web.mgt.WebSecurityManager-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setSecurityManager</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.101">setSecurityManager</a>(<a href="../../../../../org/apache/shiro/web/mgt/WebSecurityManager.html" title="interface in org.apache.shiro.web.mgt">WebSecurityManager</a>&nbsp;sm)</pre>
</li>
</ul>
<a name="getFilterChainResolver--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFilterChainResolver</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/shiro/web/filter/mgt/FilterChainResolver.html" title="interface in org.apache.shiro.web.filter.mgt">FilterChainResolver</a>&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.105">getFilterChainResolver</a>()</pre>
</li>
</ul>
<a name="setFilterChainResolver-org.apache.shiro.web.filter.mgt.FilterChainResolver-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setFilterChainResolver</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.109">setFilterChainResolver</a>(<a href="../../../../../org/apache/shiro/web/filter/mgt/FilterChainResolver.html" title="interface in org.apache.shiro.web.filter.mgt">FilterChainResolver</a>&nbsp;filterChainResolver)</pre>
</li>
</ul>
<a name="isStaticSecurityManagerEnabled--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isStaticSecurityManagerEnabled</h4>
<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.129">isStaticSecurityManagerEnabled</a>()</pre>
<div class="block">Returns <code>true</code> if the constructed <a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#getSecurityManager--"><code>securityManager</code></a> reference should be bound
to static memory (via
<code>SecurityUtils.</code><a href="../../../../../org/apache/shiro/SecurityUtils.html#setSecurityManager-org.apache.shiro.mgt.SecurityManager-"><code>setSecurityManager</code></a>),
<code>false</code> otherwise.
<p/>
The default value is <code>false</code>.
<p/></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if the constructed <a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#getSecurityManager--"><code>securityManager</code></a> reference should be bound
to static memory (via <code>SecurityUtils.</code><a href="../../../../../org/apache/shiro/SecurityUtils.html#setSecurityManager-org.apache.shiro.mgt.SecurityManager-"><code>setSecurityManager</code></a>),
<code>false</code> otherwise.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.2</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="https://issues.apache.org/jira/browse/SHIRO-287">SHIRO-287</a></dd>
</dl>
</li>
</ul>
<a name="setStaticSecurityManagerEnabled-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setStaticSecurityManagerEnabled</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.145">setStaticSecurityManagerEnabled</a>(boolean&nbsp;staticSecurityManagerEnabled)</pre>
<div class="block">Sets if the constructed <a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#getSecurityManager--"><code>securityManager</code></a> reference should be bound
to static memory (via <code>SecurityUtils.</code><a href="../../../../../org/apache/shiro/SecurityUtils.html#setSecurityManager-org.apache.shiro.mgt.SecurityManager-"><code>setSecurityManager</code></a>).
<p/>
The default value is <code>false</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>staticSecurityManagerEnabled</code> - if the constructed <a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#getSecurityManager--"><code>securityManager</code></a> reference
should be bound to static memory (via
<code>SecurityUtils.</code><a href="../../../../../org/apache/shiro/SecurityUtils.html#setSecurityManager-org.apache.shiro.mgt.SecurityManager-"><code>setSecurityManager</code></a>).</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.2</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="https://issues.apache.org/jira/browse/SHIRO-287">SHIRO-287</a></dd>
</dl>
</li>
</ul>
<a name="onFilterConfigSet--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onFilterConfigSet</h4>
<pre>protected final&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.149">onFilterConfigSet</a>()
throws <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/shiro/web/servlet/AbstractFilter.html#onFilterConfigSet--">AbstractFilter</a></code></span></div>
<div class="block">Template method to be overridden by subclasses to perform initialization logic at start-up. The
<code>ServletContext</code> and <code>FilterConfig</code> will be accessible
(and non-<code>null</code>) at the time this method is invoked via the
<a href="../../../../../org/apache/shiro/web/servlet/ServletContextSupport.html#getServletContext--"><code>getServletContext()</code></a> and <a href="../../../../../org/apache/shiro/web/servlet/AbstractFilter.html#getFilterConfig--"><code>getFilterConfig()</code></a>
methods respectively.
<p/>
<code>init-param</code> values may be conveniently obtained via the <a href="../../../../../org/apache/shiro/web/servlet/AbstractFilter.html#getInitParam-java.lang.String-"><code>AbstractFilter.getInitParam(String)</code></a> method.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/shiro/web/servlet/AbstractFilter.html#onFilterConfigSet--">onFilterConfigSet</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/shiro/web/servlet/AbstractFilter.html" title="class in org.apache.shiro.web.servlet">AbstractFilter</a></code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code> - if the subclass has an error upon initialization.</dd>
</dl>
</li>
</ul>
<a name="init--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>init</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.177">init</a>()
throws <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
</dl>
</li>
</ul>
<a name="createDefaultSecurityManager--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createDefaultSecurityManager</h4>
<pre>protected&nbsp;<a href="../../../../../org/apache/shiro/web/mgt/WebSecurityManager.html" title="interface in org.apache.shiro.web.mgt">WebSecurityManager</a>&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.194">createDefaultSecurityManager</a>()</pre>
</li>
</ul>
<a name="isHttpSessions--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isHttpSessions</h4>
<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.198">isHttpSessions</a>()</pre>
</li>
</ul>
<a name="wrapServletRequest-javax.servlet.http.HttpServletRequest-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>wrapServletRequest</h4>
<pre>protected&nbsp;javax.servlet.ServletRequest&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.210">wrapServletRequest</a>(javax.servlet.http.HttpServletRequest&nbsp;orig)</pre>
<div class="block">Wraps the original HttpServletRequest in a <a href="../../../../../org/apache/shiro/web/servlet/ShiroHttpServletRequest.html" title="class in org.apache.shiro.web.servlet"><code>ShiroHttpServletRequest</code></a>, which is required for supporting
Servlet Specification behavior backed by a <a href="../../../../../org/apache/shiro/subject/Subject.html" title="interface in org.apache.shiro.subject"><code>Subject</code></a> instance.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>orig</code> - the original Servlet Container-provided incoming <code>HttpServletRequest</code> instance.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><a href="../../../../../org/apache/shiro/web/servlet/ShiroHttpServletRequest.html" title="class in org.apache.shiro.web.servlet"><code>ShiroHttpServletRequest</code></a> instance wrapping the original.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
</dl>
</li>
</ul>
<a name="prepareServletRequest-javax.servlet.ServletRequest-javax.servlet.ServletResponse-javax.servlet.FilterChain-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>prepareServletRequest</h4>
<pre>protected&nbsp;javax.servlet.ServletRequest&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.229">prepareServletRequest</a>(javax.servlet.ServletRequest&nbsp;request,
javax.servlet.ServletResponse&nbsp;response,
javax.servlet.FilterChain&nbsp;chain)</pre>
<div class="block">Prepares the <code>ServletRequest</code> instance that will be passed to the <code>FilterChain</code> for request
processing.
<p/>
If the <code>ServletRequest</code> is an instance of <code>HttpServletRequest</code>, the value returned from this method
is obtained by calling <a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#wrapServletRequest-javax.servlet.http.HttpServletRequest-"><code>wrapServletRequest(javax.servlet.http.HttpServletRequest)</code></a> to allow Shiro-specific
HTTP behavior, otherwise the original <code>ServletRequest</code> argument is returned.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>request</code> - the incoming ServletRequest</dd>
<dd><code>response</code> - the outgoing ServletResponse</dd>
<dd><code>chain</code> - the Servlet Container provided <code>FilterChain</code> that will receive the returned request.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <code>ServletRequest</code> instance that will be passed to the <code>FilterChain</code> for request processing.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
</dl>
</li>
</ul>
<a name="wrapServletResponse-javax.servlet.http.HttpServletResponse-org.apache.shiro.web.servlet.ShiroHttpServletRequest-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>wrapServletResponse</h4>
<pre>protected&nbsp;javax.servlet.ServletResponse&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.248">wrapServletResponse</a>(javax.servlet.http.HttpServletResponse&nbsp;orig,
<a href="../../../../../org/apache/shiro/web/servlet/ShiroHttpServletRequest.html" title="class in org.apache.shiro.web.servlet">ShiroHttpServletRequest</a>&nbsp;request)</pre>
<div class="block">Returns a new <a href="../../../../../org/apache/shiro/web/servlet/ShiroHttpServletResponse.html" title="class in org.apache.shiro.web.servlet"><code>ShiroHttpServletResponse</code></a> instance, wrapping the <code>orig</code> argument, in order to provide
correct URL rewriting behavior required by the Servlet Specification when using Shiro-based sessions (and not
Servlet Container HTTP-based sessions).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>orig</code> - the original <code>HttpServletResponse</code> instance provided by the Servlet Container.</dd>
<dd><code>request</code> - the <code>ShiroHttpServletRequest</code> instance wrapping the original request.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the wrapped ServletResponse instance to use during <code>FilterChain</code> execution.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
</dl>
</li>
</ul>
<a name="prepareServletResponse-javax.servlet.ServletRequest-javax.servlet.ServletResponse-javax.servlet.FilterChain-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>prepareServletResponse</h4>
<pre>protected&nbsp;javax.servlet.ServletResponse&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.271">prepareServletResponse</a>(javax.servlet.ServletRequest&nbsp;request,
javax.servlet.ServletResponse&nbsp;response,
javax.servlet.FilterChain&nbsp;chain)</pre>
<div class="block">Prepares the <code>ServletResponse</code> instance that will be passed to the <code>FilterChain</code> for request
processing.
<p/>
This implementation delegates to <a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#wrapServletRequest-javax.servlet.http.HttpServletRequest-"><code>wrapServletRequest(javax.servlet.http.HttpServletRequest)</code></a>
only if Shiro-based sessions are enabled (that is, !<a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#isHttpSessions--"><code>isHttpSessions()</code></a>) and the request instance is a
<a href="../../../../../org/apache/shiro/web/servlet/ShiroHttpServletRequest.html" title="class in org.apache.shiro.web.servlet"><code>ShiroHttpServletRequest</code></a>. This ensures that any URL rewriting that occurs is handled correctly using the
Shiro-managed Session's sessionId and not a servlet container session ID.
<p/>
If HTTP-based sessions are enabled (the default), then this method does nothing and just returns the
<code>ServletResponse</code> argument as-is, relying on the default Servlet Container URL rewriting logic.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>request</code> - the incoming ServletRequest</dd>
<dd><code>response</code> - the outgoing ServletResponse</dd>
<dd><code>chain</code> - the Servlet Container provided <code>FilterChain</code> that will receive the returned request.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <code>ServletResponse</code> instance that will be passed to the <code>FilterChain</code> during request processing.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
</dl>
</li>
</ul>
<a name="createSubject-javax.servlet.ServletRequest-javax.servlet.ServletResponse-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createSubject</h4>
<pre>protected&nbsp;<a href="../../../../../org/apache/shiro/web/subject/WebSubject.html" title="interface in org.apache.shiro.web.subject">WebSubject</a>&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.291">createSubject</a>(javax.servlet.ServletRequest&nbsp;request,
javax.servlet.ServletResponse&nbsp;response)</pre>
<div class="block">Creates a <a href="../../../../../org/apache/shiro/web/subject/WebSubject.html" title="interface in org.apache.shiro.web.subject"><code>WebSubject</code></a> instance to associate with the incoming request/response pair which will be used
throughout the request/response execution.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>request</code> - the incoming <code>ServletRequest</code></dd>
<dd><code>response</code> - the outgoing <code>ServletResponse</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <code>WebSubject</code> instance to associate with the request/response execution</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
</dl>
</li>
</ul>
<a name="updateSessionLastAccessTime-javax.servlet.ServletRequest-javax.servlet.ServletResponse-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>updateSessionLastAccessTime</h4>
<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.307">updateSessionLastAccessTime</a>(javax.servlet.ServletRequest&nbsp;request,
javax.servlet.ServletResponse&nbsp;response)</pre>
<div class="block">Updates any 'native' Session's last access time that might exist to the timestamp when this method is called.
If native sessions are not enabled (that is, standard Servlet container sessions are being used) or there is no
session (<code>subject.getSession(false) == null</code>), this method does nothing.
<p/>This method implementation merely calls
<code>Session.<a href="../../../../../org/apache/shiro/session/Session.html#touch--"><code>touch</code></a>()</code> on the session.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>request</code> - incoming request - ignored, but available to subclasses that might wish to override this method</dd>
<dd><code>response</code> - outgoing response - ignored, but available to subclasses that might wish to override this method</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
</dl>
</li>
</ul>
<a name="doFilterInternal-javax.servlet.ServletRequest-javax.servlet.ServletResponse-javax.servlet.FilterChain-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doFilterInternal</h4>
<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.350">doFilterInternal</a>(javax.servlet.ServletRequest&nbsp;servletRequest,
javax.servlet.ServletResponse&nbsp;servletResponse,
javax.servlet.FilterChain&nbsp;chain)
throws javax.servlet.ServletException,
<a href="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><code>doFilterInternal</code> implementation that sets-up, executes, and cleans-up a Shiro-filtered request. It
performs the following ordered operations:
<ol>
<li><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#prepareServletRequest-javax.servlet.ServletRequest-javax.servlet.ServletResponse-javax.servlet.FilterChain-"><code>Prepares</code></a>
the incoming <code>ServletRequest</code> for use during Shiro's processing</li>
<li><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#prepareServletResponse-javax.servlet.ServletRequest-javax.servlet.ServletResponse-javax.servlet.FilterChain-"><code>Prepares</code></a>
the outgoing <code>ServletResponse</code> for use during Shiro's processing</li>
<li> <a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#createSubject-javax.servlet.ServletRequest-javax.servlet.ServletResponse-"><code>Creates</code></a> a
<a href="../../../../../org/apache/shiro/subject/Subject.html" title="interface in org.apache.shiro.subject"><code>Subject</code></a> instance based on the specified request/response pair.</li>
<li>Finally <a href="../../../../../org/apache/shiro/subject/Subject.html#execute-java.lang.Runnable-"><code>executes</code></a> the
<a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#updateSessionLastAccessTime-javax.servlet.ServletRequest-javax.servlet.ServletResponse-"><code>updateSessionLastAccessTime(javax.servlet.ServletRequest, javax.servlet.ServletResponse)</code></a> and
<a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#executeChain-javax.servlet.ServletRequest-javax.servlet.ServletResponse-javax.servlet.FilterChain-"><code>executeChain(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)</code></a>
methods</li>
</ol>
<p/>
The <code>Subject.</code><a href="../../../../../org/apache/shiro/subject/Subject.html#execute-java.lang.Runnable-"><code>execute(Runnable)</code></a> call in step #4 is used as an
implementation technique to guarantee proper thread binding and restoration is completed successfully.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/shiro/web/servlet/OncePerRequestFilter.html#doFilterInternal-javax.servlet.ServletRequest-javax.servlet.ServletResponse-javax.servlet.FilterChain-">doFilterInternal</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/shiro/web/servlet/OncePerRequestFilter.html" title="class in org.apache.shiro.web.servlet">OncePerRequestFilter</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>servletRequest</code> - the incoming <code>ServletRequest</code></dd>
<dd><code>servletResponse</code> - the outgoing <code>ServletResponse</code></dd>
<dd><code>chain</code> - the container-provided <code>FilterChain</code> to execute</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if an IO error occurs</dd>
<dd><code>javax.servlet.ServletException</code> - if an Throwable other than an IOException</dd>
</dl>
</li>
</ul>
<a name="getExecutionChain-javax.servlet.ServletRequest-javax.servlet.ServletResponse-javax.servlet.FilterChain-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getExecutionChain</h4>
<pre>protected&nbsp;javax.servlet.FilterChain&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.406">getExecutionChain</a>(javax.servlet.ServletRequest&nbsp;request,
javax.servlet.ServletResponse&nbsp;response,
javax.servlet.FilterChain&nbsp;origChain)</pre>
<div class="block">Returns the <code>FilterChain</code> to execute for the given request.
<p/>
The <code>origChain</code> argument is the
original <code>FilterChain</code> supplied by the Servlet Container, but it may be modified to provide
more behavior by pre-pending further chains according to the Shiro configuration.
<p/>
This implementation returns the chain that will actually be executed by acquiring the chain from a
<a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#getFilterChainResolver--"><code>filterChainResolver</code></a>. The resolver determines exactly which chain to
execute, typically based on URL configuration. If no chain is returned from the resolver call
(returns <code>null</code>), then the <code>origChain</code> will be returned by default.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>request</code> - the incoming ServletRequest</dd>
<dd><code>response</code> - the outgoing ServletResponse</dd>
<dd><code>origChain</code> - the original <code>FilterChain</code> provided by the Servlet Container</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <code>FilterChain</code> to execute for the given request</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
</dl>
</li>
</ul>
<a name="executeChain-javax.servlet.ServletRequest-javax.servlet.ServletResponse-javax.servlet.FilterChain-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>executeChain</h4>
<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.446">executeChain</a>(javax.servlet.ServletRequest&nbsp;request,
javax.servlet.ServletResponse&nbsp;response,
javax.servlet.FilterChain&nbsp;origChain)
throws <a href="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
javax.servlet.ServletException</pre>
<div class="block">Executes a <code>FilterChain</code> for the given request.
<p/>
This implementation first delegates to
<code><a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#getExecutionChain-javax.servlet.ServletRequest-javax.servlet.ServletResponse-javax.servlet.FilterChain-"><code>getExecutionChain</code></a></code>
to allow the application's Shiro configuration to determine exactly how the chain should execute. The resulting
value from that call is then executed directly by calling the returned <code>FilterChain</code>'s
<code>doFilter</code> method. That is:
<pre>
FilterChain chain = <a href="../../../../../org/apache/shiro/web/servlet/AbstractShiroFilter.html#getExecutionChain-javax.servlet.ServletRequest-javax.servlet.ServletResponse-javax.servlet.FilterChain-"><code>getExecutionChain(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)</code></a>(request, response, origChain);
chain.<code>doFilter</code>(request,response);</pre></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>request</code> - the incoming ServletRequest</dd>
<dd><code>response</code> - the outgoing ServletResponse</dd>
<dd><code>origChain</code> - the Servlet Container-provided chain that may be wrapped further by an application-configured
chain of Filters.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if the underlying <code>chain.doFilter</code> call results in an IOException</dd>
<dd><code>javax.servlet.ServletException</code> - if the underlying <code>chain.doFilter</code> call results in a ServletException</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/AbstractShiroFilter.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/shiro/web/servlet/AbstractFilter.html" title="class in org.apache.shiro.web.servlet"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/shiro/web/servlet/AdviceFilter.html" title="class in org.apache.shiro.web.servlet"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/shiro/web/servlet/AbstractShiroFilter.html" target="_top">Frames</a></li>
<li><a href="AbstractShiroFilter.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#fields.inherited.from.class.org.apache.shiro.web.servlet.OncePerRequestFilter">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2004&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>