blob: e38224b0d456137a83ea1879124170d85a235b88 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>AbstractShiroFilter (Apache Shiro 1.9.1 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="AbstractShiroFilter (Apache Shiro 1.9.1 API)";
}
}
catch(err) {
}
//-->
var data = {"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";
var pathtoroot = "../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav"><!-- Matomo --> <script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ /* We explicitly disable cookie tracking to avoid privacy issues */ _paq.push(['disableCookies']); _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="//matomo.privacy.apache.org/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '2']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); </script> <!-- End Matomo Code -->
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.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" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">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 id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.shiro.web.servlet</a></div>
<h2 title="Class AbstractShiroFilter" class="title">Class AbstractShiroFilter</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="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="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="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="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><code><a href="https://docs.oracle.com/javaee/5/api/javax/servlet/Filter.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">Filter</a></code>, <code><a href="../../util/Nameable.html" title="interface in org.apache.shiro.util">Nameable</a></code></dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><code><a href="../../guice/web/GuiceShiroFilter.html" title="class in org.apache.shiro.guice.web">GuiceShiroFilter</a></code>, <code><a href="IniShiroFilter.html" title="class in org.apache.shiro.web.servlet">IniShiroFilter</a></code>, <code><a href="ShiroFilter.html" title="class in org.apache.shiro.web.servlet">ShiroFilter</a></code></dd>
</dl>
<hr>
<pre>public abstract class <a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.74">AbstractShiroFilter</a>
extends <a href="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="#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="#setSecurityManager(org.apache.shiro.web.mgt.WebSecurityManager)"><code>setSecurityManager(org.apache.shiro.web.mgt.WebSecurityManager)</code></a> and
<a href="#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="../../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="../../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 =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.org.apache.shiro.web.servlet.OncePerRequestFilter">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.shiro.web.servlet.<a href="OncePerRequestFilter.html" title="class in org.apache.shiro.web.servlet">OncePerRequestFilter</a></h3>
<code><a href="OncePerRequestFilter.html#ALREADY_FILTERED_SUFFIX">ALREADY_FILTERED_SUFFIX</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.org.apache.shiro.web.servlet.AbstractFilter">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.shiro.web.servlet.<a href="AbstractFilter.html" title="class in org.apache.shiro.web.servlet">AbstractFilter</a></h3>
<code><a href="AbstractFilter.html#filterConfig">filterConfig</a></code></li>
</ul>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colSecond" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">AbstractShiroFilter</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<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="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected <a href="../mgt/WebSecurityManager.html" title="interface in org.apache.shiro.web.mgt">WebSecurityManager</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createDefaultSecurityManager()">createDefaultSecurityManager</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected <a href="../subject/WebSubject.html" title="interface in org.apache.shiro.web.subject">WebSubject</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createSubject(javax.servlet.ServletRequest,javax.servlet.ServletResponse)">createSubject</a></span>&#8203;(<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletRequest</a>&nbsp;request,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletResponse</a>&nbsp;response)</code></th>
<td class="colLast">
<div class="block">Creates a <a href="../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>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#doFilterInternal(javax.servlet.ServletRequest,javax.servlet.ServletResponse,javax.servlet.FilterChain)">doFilterInternal</a></span>&#8203;(<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletRequest</a>&nbsp;servletRequest,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletResponse</a>&nbsp;servletResponse,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/FilterChain.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">FilterChain</a>&nbsp;chain)</code></th>
<td class="colLast">
<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>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#executeChain(javax.servlet.ServletRequest,javax.servlet.ServletResponse,javax.servlet.FilterChain)">executeChain</a></span>&#8203;(<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletRequest</a>&nbsp;request,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletResponse</a>&nbsp;response,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/FilterChain.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">FilterChain</a>&nbsp;origChain)</code></th>
<td class="colLast">
<div class="block">Executes a <a href="https://docs.oracle.com/javaee/5/api/javax/servlet/FilterChain.html?is-external=true" title="class or interface in javax.servlet" class="externalLink"><code>FilterChain</code></a> for the given request.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>protected <a href="https://docs.oracle.com/javaee/5/api/javax/servlet/FilterChain.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">FilterChain</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getExecutionChain(javax.servlet.ServletRequest,javax.servlet.ServletResponse,javax.servlet.FilterChain)">getExecutionChain</a></span>&#8203;(<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletRequest</a>&nbsp;request,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletResponse</a>&nbsp;response,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/FilterChain.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">FilterChain</a>&nbsp;origChain)</code></th>
<td class="colLast">
<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="../filter/mgt/FilterChainResolver.html" title="interface in org.apache.shiro.web.filter.mgt">FilterChainResolver</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getFilterChainResolver()">getFilterChainResolver</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../mgt/WebSecurityManager.html" title="interface in org.apache.shiro.web.mgt">WebSecurityManager</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getSecurityManager()">getSecurityManager</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#init()">init</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isHttpSessions()">isHttpSessions</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isStaticSecurityManagerEnabled()">isStaticSecurityManagerEnabled</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns <code>true</code> if the constructed <a href="#getSecurityManager()"><code>securityManager</code></a> reference should be bound
to static memory (via
<code>SecurityUtils.</code><a href="../../SecurityUtils.html#setSecurityManager(org.apache.shiro.mgt.SecurityManager)"><code>setSecurityManager</code></a>),
<code>false</code> otherwise.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onFilterConfigSet()">onFilterConfigSet</a></span>()</code></th>
<td class="colLast">
<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 <a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletRequest</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#prepareServletRequest(javax.servlet.ServletRequest,javax.servlet.ServletResponse,javax.servlet.FilterChain)">prepareServletRequest</a></span>&#8203;(<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletRequest</a>&nbsp;request,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletResponse</a>&nbsp;response,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/FilterChain.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">FilterChain</a>&nbsp;chain)</code></th>
<td class="colLast">
<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 <a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletResponse</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#prepareServletResponse(javax.servlet.ServletRequest,javax.servlet.ServletResponse,javax.servlet.FilterChain)">prepareServletResponse</a></span>&#8203;(<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletRequest</a>&nbsp;request,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletResponse</a>&nbsp;response,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/FilterChain.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">FilterChain</a>&nbsp;chain)</code></th>
<td class="colLast">
<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>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setFilterChainResolver(org.apache.shiro.web.filter.mgt.FilterChainResolver)">setFilterChainResolver</a></span>&#8203;(<a href="../filter/mgt/FilterChainResolver.html" title="interface in org.apache.shiro.web.filter.mgt">FilterChainResolver</a>&nbsp;filterChainResolver)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setSecurityManager(org.apache.shiro.web.mgt.WebSecurityManager)">setSecurityManager</a></span>&#8203;(<a href="../mgt/WebSecurityManager.html" title="interface in org.apache.shiro.web.mgt">WebSecurityManager</a>&nbsp;sm)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setStaticSecurityManagerEnabled(boolean)">setStaticSecurityManagerEnabled</a></span>&#8203;(boolean&nbsp;staticSecurityManagerEnabled)</code></th>
<td class="colLast">
<div class="block">Sets if the constructed <a href="#getSecurityManager()"><code>securityManager</code></a> reference should be bound
to static memory (via <code>SecurityUtils.</code><a href="../../SecurityUtils.html#setSecurityManager(org.apache.shiro.mgt.SecurityManager)"><code>setSecurityManager</code></a>).</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#updateSessionLastAccessTime(javax.servlet.ServletRequest,javax.servlet.ServletResponse)">updateSessionLastAccessTime</a></span>&#8203;(<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletRequest</a>&nbsp;request,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletResponse</a>&nbsp;response)</code></th>
<td class="colLast">
<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 <a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletRequest</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#wrapServletRequest(javax.servlet.http.HttpServletRequest)">wrapServletRequest</a></span>&#8203;(<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http" class="externalLink">HttpServletRequest</a>&nbsp;orig)</code></th>
<td class="colLast">
<div class="block">Wraps the original HttpServletRequest in a <a href="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="../../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 <a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletResponse</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#wrapServletResponse(javax.servlet.http.HttpServletResponse,org.apache.shiro.web.servlet.ShiroHttpServletRequest)">wrapServletResponse</a></span>&#8203;(<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletResponse.html?is-external=true" title="class or interface in javax.servlet.http" class="externalLink">HttpServletResponse</a>&nbsp;orig,
<a href="ShiroHttpServletRequest.html" title="class in org.apache.shiro.web.servlet">ShiroHttpServletRequest</a>&nbsp;request)</code></th>
<td class="colLast">
<div class="block">Returns a new <a href="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 id="methods.inherited.from.class.org.apache.shiro.web.servlet.OncePerRequestFilter">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.shiro.web.servlet.<a href="OncePerRequestFilter.html" title="class in org.apache.shiro.web.servlet">OncePerRequestFilter</a></h3>
<code><a href="OncePerRequestFilter.html#doFilter(javax.servlet.ServletRequest,javax.servlet.ServletResponse,javax.servlet.FilterChain)">doFilter</a>, <a href="OncePerRequestFilter.html#getAlreadyFilteredAttributeName()">getAlreadyFilteredAttributeName</a>, <a href="OncePerRequestFilter.html#isEnabled()">isEnabled</a>, <a href="OncePerRequestFilter.html#isEnabled(javax.servlet.ServletRequest,javax.servlet.ServletResponse)">isEnabled</a>, <a href="OncePerRequestFilter.html#setEnabled(boolean)">setEnabled</a>, <a href="OncePerRequestFilter.html#shouldNotFilter(javax.servlet.ServletRequest)">shouldNotFilter</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.apache.shiro.web.servlet.NameableFilter">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.shiro.web.servlet.<a href="NameableFilter.html" title="class in org.apache.shiro.web.servlet">NameableFilter</a></h3>
<code><a href="NameableFilter.html#getName()">getName</a>, <a href="NameableFilter.html#setName(java.lang.String)">setName</a>, <a href="NameableFilter.html#toStringBuilder()">toStringBuilder</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.apache.shiro.web.servlet.AbstractFilter">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.shiro.web.servlet.<a href="AbstractFilter.html" title="class in org.apache.shiro.web.servlet">AbstractFilter</a></h3>
<code><a href="AbstractFilter.html#destroy()">destroy</a>, <a href="AbstractFilter.html#getFilterConfig()">getFilterConfig</a>, <a href="AbstractFilter.html#getInitParam(java.lang.String)">getInitParam</a>, <a href="AbstractFilter.html#init(javax.servlet.FilterConfig)">init</a>, <a href="AbstractFilter.html#setFilterConfig(javax.servlet.FilterConfig)">setFilterConfig</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.apache.shiro.web.servlet.ServletContextSupport">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.shiro.web.servlet.<a href="ServletContextSupport.html" title="class in org.apache.shiro.web.servlet">ServletContextSupport</a></h3>
<code><a href="ServletContextSupport.html#getContextAttribute(java.lang.String)">getContextAttribute</a>, <a href="ServletContextSupport.html#getContextInitParam(java.lang.String)">getContextInitParam</a>, <a href="ServletContextSupport.html#getServletContext()">getServletContext</a>, <a href="ServletContextSupport.html#removeContextAttribute(java.lang.String)">removeContextAttribute</a>, <a href="ServletContextSupport.html#setContextAttribute(java.lang.String,java.lang.Object)">setContextAttribute</a>, <a href="ServletContextSupport.html#setServletContext(javax.servlet.ServletContext)">setServletContext</a>, <a href="ServletContextSupport.html#toString()">toString</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink">wait</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</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>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="getSecurityManager()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSecurityManager</h4>
<pre class="methodSignature">public&nbsp;<a href="../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 id="setSecurityManager(org.apache.shiro.web.mgt.WebSecurityManager)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setSecurityManager</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.101">setSecurityManager</a>&#8203;(<a href="../mgt/WebSecurityManager.html" title="interface in org.apache.shiro.web.mgt">WebSecurityManager</a>&nbsp;sm)</pre>
</li>
</ul>
<a id="getFilterChainResolver()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFilterChainResolver</h4>
<pre class="methodSignature">public&nbsp;<a href="../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 id="setFilterChainResolver(org.apache.shiro.web.filter.mgt.FilterChainResolver)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setFilterChainResolver</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.109">setFilterChainResolver</a>&#8203;(<a href="../filter/mgt/FilterChainResolver.html" title="interface in org.apache.shiro.web.filter.mgt">FilterChainResolver</a>&nbsp;filterChainResolver)</pre>
</li>
</ul>
<a id="isStaticSecurityManagerEnabled()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isStaticSecurityManagerEnabled</h4>
<pre class="methodSignature">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="#getSecurityManager()"><code>securityManager</code></a> reference should be bound
to static memory (via
<code>SecurityUtils.</code><a href="../../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="#getSecurityManager()"><code>securityManager</code></a> reference should be bound
to static memory (via <code>SecurityUtils.</code><a href="../../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 id="setStaticSecurityManagerEnabled(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setStaticSecurityManagerEnabled</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.145">setStaticSecurityManagerEnabled</a>&#8203;(boolean&nbsp;staticSecurityManagerEnabled)</pre>
<div class="block">Sets if the constructed <a href="#getSecurityManager()"><code>securityManager</code></a> reference should be bound
to static memory (via <code>SecurityUtils.</code><a href="../../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="#getSecurityManager()"><code>securityManager</code></a> reference
should be bound to static memory (via
<code>SecurityUtils.</code><a href="../../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 id="onFilterConfigSet()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onFilterConfigSet</h4>
<pre class="methodSignature">protected final&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.149">onFilterConfigSet</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang" class="externalLink">Exception</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="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="ServletContextSupport.html#getServletContext()"><code>getServletContext()</code></a> and <a href="AbstractFilter.html#getFilterConfig()"><code>getFilterConfig()</code></a>
methods respectively.
<p/>
<code>init-param</code> values may be conveniently obtained via the <a href="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="AbstractFilter.html#onFilterConfigSet()">onFilterConfigSet</a></code>&nbsp;in class&nbsp;<code><a href="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="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang" class="externalLink">Exception</a></code> - if the subclass has an error upon initialization.</dd>
</dl>
</li>
</ul>
<a id="init()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>init</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.177">init</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang" class="externalLink">Exception</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang" class="externalLink">Exception</a></code></dd>
</dl>
</li>
</ul>
<a id="createDefaultSecurityManager()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createDefaultSecurityManager</h4>
<pre class="methodSignature">protected&nbsp;<a href="../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 id="isHttpSessions()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isHttpSessions</h4>
<pre class="methodSignature">protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.198">isHttpSessions</a>()</pre>
</li>
</ul>
<a id="wrapServletRequest(javax.servlet.http.HttpServletRequest)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>wrapServletRequest</h4>
<pre class="methodSignature">protected&nbsp;<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletRequest</a>&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.210">wrapServletRequest</a>&#8203;(<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http" class="externalLink">HttpServletRequest</a>&nbsp;orig)</pre>
<div class="block">Wraps the original HttpServletRequest in a <a href="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="../../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="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 id="prepareServletRequest(javax.servlet.ServletRequest,javax.servlet.ServletResponse,javax.servlet.FilterChain)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>prepareServletRequest</h4>
<pre class="methodSignature">protected&nbsp;<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletRequest</a>&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.228">prepareServletRequest</a>&#8203;(<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletRequest</a>&nbsp;request,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletResponse</a>&nbsp;response,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/FilterChain.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">FilterChain</a>&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 <a href="https://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http" class="externalLink"><code>HttpServletRequest</code></a>, the value returned from this method
is obtained by calling <a href="#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 id="wrapServletResponse(javax.servlet.http.HttpServletResponse,org.apache.shiro.web.servlet.ShiroHttpServletRequest)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>wrapServletResponse</h4>
<pre class="methodSignature">protected&nbsp;<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletResponse</a>&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.248">wrapServletResponse</a>&#8203;(<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletResponse.html?is-external=true" title="class or interface in javax.servlet.http" class="externalLink">HttpServletResponse</a>&nbsp;orig,
<a href="ShiroHttpServletRequest.html" title="class in org.apache.shiro.web.servlet">ShiroHttpServletRequest</a>&nbsp;request)</pre>
<div class="block">Returns a new <a href="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 <a href="https://docs.oracle.com/javaee/5/api/javax/servlet/FilterChain.html?is-external=true" title="class or interface in javax.servlet" class="externalLink"><code>FilterChain</code></a> execution.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
</dl>
</li>
</ul>
<a id="prepareServletResponse(javax.servlet.ServletRequest,javax.servlet.ServletResponse,javax.servlet.FilterChain)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>prepareServletResponse</h4>
<pre class="methodSignature">protected&nbsp;<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletResponse</a>&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.270">prepareServletResponse</a>&#8203;(<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletRequest</a>&nbsp;request,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletResponse</a>&nbsp;response,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/FilterChain.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">FilterChain</a>&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="#wrapServletRequest(javax.servlet.http.HttpServletRequest)"><code>wrapServletRequest(javax.servlet.http.HttpServletRequest)</code></a>
only if Shiro-based sessions are enabled (that is, !<a href="#isHttpSessions()"><code>isHttpSessions()</code></a>) and the request instance is a
<a href="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 id="createSubject(javax.servlet.ServletRequest,javax.servlet.ServletResponse)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createSubject</h4>
<pre class="methodSignature">protected&nbsp;<a href="../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>&#8203;(<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletRequest</a>&nbsp;request,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletResponse</a>&nbsp;response)</pre>
<div class="block">Creates a <a href="../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 id="updateSessionLastAccessTime(javax.servlet.ServletRequest,javax.servlet.ServletResponse)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>updateSessionLastAccessTime</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.306">updateSessionLastAccessTime</a>&#8203;(<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletRequest</a>&nbsp;request,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletResponse</a>&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="../../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 id="doFilterInternal(javax.servlet.ServletRequest,javax.servlet.ServletResponse,javax.servlet.FilterChain)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doFilterInternal</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.350">doFilterInternal</a>&#8203;(<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletRequest</a>&nbsp;servletRequest,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletResponse</a>&nbsp;servletResponse,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/FilterChain.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">FilterChain</a>&nbsp;chain)
throws <a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletException.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink">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="#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="#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="#createSubject(javax.servlet.ServletRequest,javax.servlet.ServletResponse)"><code>Creates</code></a> a
<a href="../../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="../../subject/Subject.html#execute(java.lang.Runnable)"><code>executes</code></a> the
<a href="#updateSessionLastAccessTime(javax.servlet.ServletRequest,javax.servlet.ServletResponse)"><code>updateSessionLastAccessTime(javax.servlet.ServletRequest, javax.servlet.ServletResponse)</code></a> and
<a href="#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="../../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="OncePerRequestFilter.html#doFilterInternal(javax.servlet.ServletRequest,javax.servlet.ServletResponse,javax.servlet.FilterChain)">doFilterInternal</a></code>&nbsp;in class&nbsp;<code><a href="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="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink">IOException</a></code> - if an IO error occurs</dd>
<dd><code><a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletException.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletException</a></code> - if an Throwable other than an IOException</dd>
</dl>
</li>
</ul>
<a id="getExecutionChain(javax.servlet.ServletRequest,javax.servlet.ServletResponse,javax.servlet.FilterChain)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getExecutionChain</h4>
<pre class="methodSignature">protected&nbsp;<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/FilterChain.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">FilterChain</a>&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.406">getExecutionChain</a>&#8203;(<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletRequest</a>&nbsp;request,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletResponse</a>&nbsp;response,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/FilterChain.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">FilterChain</a>&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="#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 <a href="https://docs.oracle.com/javaee/5/api/javax/servlet/FilterChain.html?is-external=true" title="class or interface in javax.servlet" class="externalLink"><code>FilterChain</code></a> to execute for the given request</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
</dl>
</li>
</ul>
<a id="executeChain(javax.servlet.ServletRequest,javax.servlet.ServletResponse,javax.servlet.FilterChain)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>executeChain</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/shiro/web/servlet/AbstractShiroFilter.html#line.447">executeChain</a>&#8203;(<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletRequest</a>&nbsp;request,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletResponse</a>&nbsp;response,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/FilterChain.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">FilterChain</a>&nbsp;origChain)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink">IOException</a>,
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletException.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletException</a></pre>
<div class="block">Executes a <a href="https://docs.oracle.com/javaee/5/api/javax/servlet/FilterChain.html?is-external=true" title="class or interface in javax.servlet" class="externalLink"><code>FilterChain</code></a> for the given request.
<p/>
This implementation first delegates to
<code><a href="#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
<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/FilterChain.html?is-external=true#doFilter(javax.servlet.ServletRequest,javax.servlet.ServletResponse)" title="class or interface in javax.servlet" class="externalLink"><code>doFilter</code></a> method. That is:
<pre>
FilterChain chain = <a href="#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.<a href="https://docs.oracle.com/javaee/5/api/javax/servlet/FilterChain.html?is-external=true#doFilter(javax.servlet.ServletRequest,javax.servlet.ServletResponse)" title="class or interface in javax.servlet" class="externalLink"><code>doFilter</code></a>(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="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink">IOException</a></code> - if the underlying <code>chain.doFilter</code> call results in an IOException</dd>
<dd><code><a href="https://docs.oracle.com/javaee/5/api/javax/servlet/ServletException.html?is-external=true" title="class or interface in javax.servlet" class="externalLink">ServletException</a></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>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.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" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">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 id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2004&#x2013;2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>