protected void executeChain(ServletRequest request, ServletResponse response, FilterChain origChain)
            throws IOException, ServletException {
        FilterChain chain = getExecutionChain(request, response, origChain);
        chain.doFilter(request, response);
    }
Executes a {@link FilterChain} for the given request.
<p/>
This implementation first delegates to
<code>{@link #getExecutionChain(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
getExecutionChain}</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}'s
{@link FilterChain#doFilter doFilter} method.  That is:
<pre>
FilterChain chain = {@link #getExecutionChain}(request, response, origChain);
chain.{@link FilterChain#doFilter doFilter}(request,response);</pre>

@param request   the incoming ServletRequest
@param response  the outgoing ServletResponse
@param origChain the Servlet Container-provided chain that may be wrapped further by an application-configured
                 chain of Filters.
@throws IOException      if the underlying {@code chain.doFilter} call results in an IOException
@throws ServletException if the underlying {@code chain.doFilter} call results in a ServletException
@since 1.0
web/src/main/java/org/apache/shiro/web/servlet/AbstractShiroFilter.java