<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>AbstractAuthenticationStrategy (Apache Shiro :: Core 1.10.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.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.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.6.0.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.min.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="AbstractAuthenticationStrategy (Apache Shiro :: Core 1.10.1 API)";
        }
    }
    catch(err) {
    }
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":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/AbstractAuthenticationStrategy.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>Field&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.authc.pam</a></div>
<h2 title="Class AbstractAuthenticationStrategy" class="title">Class AbstractAuthenticationStrategy</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>org.apache.shiro.authc.pam.AbstractAuthenticationStrategy</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="AuthenticationStrategy.html" title="interface in org.apache.shiro.authc.pam">AuthenticationStrategy</a></code></dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><code><a href="AllSuccessfulStrategy.html" title="class in org.apache.shiro.authc.pam">AllSuccessfulStrategy</a></code>, <code><a href="AtLeastOneSuccessfulStrategy.html" title="class in org.apache.shiro.authc.pam">AtLeastOneSuccessfulStrategy</a></code>, <code><a href="FirstSuccessfulStrategy.html" title="class in org.apache.shiro.authc.pam">FirstSuccessfulStrategy</a></code></dd>
</dl>
<hr>
<pre>public abstract class <a href="../../../../../src-html/org/apache/shiro/authc/pam/AbstractAuthenticationStrategy.html#line.33">AbstractAuthenticationStrategy</a>
extends <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>
implements <a href="AuthenticationStrategy.html" title="interface in org.apache.shiro.authc.pam">AuthenticationStrategy</a></pre>
<div class="block">Abstract base implementation for Shiro's concrete <code>AuthenticationStrategy</code>
 implementations.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.9</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section>
<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">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">AbstractAuthenticationStrategy</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section>
<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><a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#afterAllAttempts(org.apache.shiro.authc.AuthenticationToken,org.apache.shiro.authc.AuthenticationInfo)">afterAllAttempts</a></span>&#8203;(<a href="../AuthenticationToken.html" title="interface in org.apache.shiro.authc">AuthenticationToken</a>&nbsp;token,
                <a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;aggregate)</code></th>
<td class="colLast">
<div class="block">Simply returns the <code>aggregate</code> argument without modification.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#afterAttempt(org.apache.shiro.realm.Realm,org.apache.shiro.authc.AuthenticationToken,org.apache.shiro.authc.AuthenticationInfo,org.apache.shiro.authc.AuthenticationInfo,java.lang.Throwable)">afterAttempt</a></span>&#8203;(<a href="../../realm/Realm.html" title="interface in org.apache.shiro.realm">Realm</a>&nbsp;realm,
            <a href="../AuthenticationToken.html" title="interface in org.apache.shiro.authc">AuthenticationToken</a>&nbsp;token,
            <a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;singleRealmInfo,
            <a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;aggregateInfo,
            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang" class="externalLink">Throwable</a>&nbsp;t)</code></th>
<td class="colLast">
<div class="block">Base implementation that will aggregate the specified <code>singleRealmInfo</code> into the
 <code>aggregateInfo</code> and then returns the aggregate.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#beforeAllAttempts(java.util.Collection,org.apache.shiro.authc.AuthenticationToken)">beforeAllAttempts</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util" class="externalLink">Collection</a>&lt;? extends <a href="../../realm/Realm.html" title="interface in org.apache.shiro.realm">Realm</a>&gt;&nbsp;realms,
                 <a href="../AuthenticationToken.html" title="interface in org.apache.shiro.authc">AuthenticationToken</a>&nbsp;token)</code></th>
<td class="colLast">
<div class="block">Simply returns <code>new <a href="../SimpleAuthenticationInfo.html" title="class in org.apache.shiro.authc"><code>SimpleAuthenticationInfo</code></a>();</code>, which supports
 aggregating account data across realms.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#beforeAttempt(org.apache.shiro.realm.Realm,org.apache.shiro.authc.AuthenticationToken,org.apache.shiro.authc.AuthenticationInfo)">beforeAttempt</a></span>&#8203;(<a href="../../realm/Realm.html" title="interface in org.apache.shiro.realm">Realm</a>&nbsp;realm,
             <a href="../AuthenticationToken.html" title="interface in org.apache.shiro.authc">AuthenticationToken</a>&nbsp;token,
             <a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;aggregate)</code></th>
<td class="colLast">
<div class="block">Simply returns the <code>aggregate</code> method argument, without modification.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>protected <a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#merge(org.apache.shiro.authc.AuthenticationInfo,org.apache.shiro.authc.AuthenticationInfo)">merge</a></span>&#8203;(<a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;info,
     <a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;aggregate)</code></th>
<td class="colLast">
<div class="block">Merges the specified <code>info</code> argument into the <code>aggregate</code> argument and then returns an
 aggregate for continued use throughout the login process.</div>
</td>
</tr>
</table>
<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#toString()" title="class or interface in java.lang" class="externalLink">toString</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>
<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>AbstractAuthenticationStrategy</h4>
<pre>public&nbsp;<a href="../../../../../src-html/org/apache/shiro/authc/pam/AbstractAuthenticationStrategy.html#line.33">AbstractAuthenticationStrategy</a>()</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a id="beforeAllAttempts(java.util.Collection,org.apache.shiro.authc.AuthenticationToken)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>beforeAllAttempts</h4>
<pre class="methodSignature">public&nbsp;<a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/shiro/authc/pam/AbstractAuthenticationStrategy.html#line.39">beforeAllAttempts</a>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util" class="externalLink">Collection</a>&lt;? extends <a href="../../realm/Realm.html" title="interface in org.apache.shiro.realm">Realm</a>&gt;&nbsp;realms,
                                            <a href="../AuthenticationToken.html" title="interface in org.apache.shiro.authc">AuthenticationToken</a>&nbsp;token)
                                     throws <a href="../AuthenticationException.html" title="class in org.apache.shiro.authc">AuthenticationException</a></pre>
<div class="block">Simply returns <code>new <a href="../SimpleAuthenticationInfo.html" title="class in org.apache.shiro.authc"><code>SimpleAuthenticationInfo</code></a>();</code>, which supports
 aggregating account data across realms.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="AuthenticationStrategy.html#beforeAllAttempts(java.util.Collection,org.apache.shiro.authc.AuthenticationToken)">beforeAllAttempts</a></code>&nbsp;in interface&nbsp;<code><a href="AuthenticationStrategy.html" title="interface in org.apache.shiro.authc.pam">AuthenticationStrategy</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>realms</code> - the Realms that will be consulted during the authentication process for the specified token.</dd>
<dd><code>token</code> - the Principal/Credential representation to be used during authentication for a corresponding subject.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an empty AuthenticationInfo object that will populated with data from multiple realms.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../AuthenticationException.html" title="class in org.apache.shiro.authc">AuthenticationException</a></code> - if the strategy implementation does not wish the Authentication attempt to execute.</dd>
</dl>
</li>
</ul>
<a id="beforeAttempt(org.apache.shiro.realm.Realm,org.apache.shiro.authc.AuthenticationToken,org.apache.shiro.authc.AuthenticationInfo)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>beforeAttempt</h4>
<pre class="methodSignature">public&nbsp;<a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/shiro/authc/pam/AbstractAuthenticationStrategy.html#line.46">beforeAttempt</a>&#8203;(<a href="../../realm/Realm.html" title="interface in org.apache.shiro.realm">Realm</a>&nbsp;realm,
                                        <a href="../AuthenticationToken.html" title="interface in org.apache.shiro.authc">AuthenticationToken</a>&nbsp;token,
                                        <a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;aggregate)
                                 throws <a href="../AuthenticationException.html" title="class in org.apache.shiro.authc">AuthenticationException</a></pre>
<div class="block">Simply returns the <code>aggregate</code> method argument, without modification.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="AuthenticationStrategy.html#beforeAttempt(org.apache.shiro.realm.Realm,org.apache.shiro.authc.AuthenticationToken,org.apache.shiro.authc.AuthenticationInfo)">beforeAttempt</a></code>&nbsp;in interface&nbsp;<code><a href="AuthenticationStrategy.html" title="interface in org.apache.shiro.authc.pam">AuthenticationStrategy</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>realm</code> - the realm that will be consulted for <code>AuthenticationInfo</code> for the specified <code>token</code>.</dd>
<dd><code>token</code> - the <code>AuthenticationToken</code> submitted for the subject attempting system log-in.</dd>
<dd><code>aggregate</code> - the aggregated AuthenticationInfo object being used across the multi-realm authentication attempt</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the AuthenticationInfo object that will be presented to further realms in the authentication process - returning
         the <code>aggregate</code> method argument is the normal case if no special action needs to be taken.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../AuthenticationException.html" title="class in org.apache.shiro.authc">AuthenticationException</a></code> - an exception thrown by the Strategy implementation if it wishes the login
          process for the associated subject (user) to stop immediately.</dd>
</dl>
</li>
</ul>
<a id="afterAttempt(org.apache.shiro.realm.Realm,org.apache.shiro.authc.AuthenticationToken,org.apache.shiro.authc.AuthenticationInfo,org.apache.shiro.authc.AuthenticationInfo,java.lang.Throwable)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>afterAttempt</h4>
<pre class="methodSignature">public&nbsp;<a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/shiro/authc/pam/AbstractAuthenticationStrategy.html#line.54">afterAttempt</a>&#8203;(<a href="../../realm/Realm.html" title="interface in org.apache.shiro.realm">Realm</a>&nbsp;realm,
                                       <a href="../AuthenticationToken.html" title="interface in org.apache.shiro.authc">AuthenticationToken</a>&nbsp;token,
                                       <a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;singleRealmInfo,
                                       <a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;aggregateInfo,
                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang" class="externalLink">Throwable</a>&nbsp;t)
                                throws <a href="../AuthenticationException.html" title="class in org.apache.shiro.authc">AuthenticationException</a></pre>
<div class="block">Base implementation that will aggregate the specified <code>singleRealmInfo</code> into the
 <code>aggregateInfo</code> and then returns the aggregate.  Can be overridden by subclasses for custom behavior.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="AuthenticationStrategy.html#afterAttempt(org.apache.shiro.realm.Realm,org.apache.shiro.authc.AuthenticationToken,org.apache.shiro.authc.AuthenticationInfo,org.apache.shiro.authc.AuthenticationInfo,java.lang.Throwable)">afterAttempt</a></code>&nbsp;in interface&nbsp;<code><a href="AuthenticationStrategy.html" title="interface in org.apache.shiro.authc.pam">AuthenticationStrategy</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>realm</code> - the realm that was just consulted for <code>AuthenticationInfo</code> for the given <code>token</code>.</dd>
<dd><code>token</code> - the <code>AuthenticationToken</code> submitted for the subject attempting system log-in.</dd>
<dd><code>singleRealmInfo</code> - the info returned from a single realm.</dd>
<dd><code>aggregateInfo</code> - the aggregate info representing all realms in a multi-realm environment.</dd>
<dd><code>t</code> - the Throwable thrown by the Realm during the attempt, or <code>null</code> if the method returned normally.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the AuthenticationInfo object that will be presented to further realms in the authentication process - returning
         the <code>aggregateAccount</code> method argument is the normal case if no special action needs to be taken.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../AuthenticationException.html" title="class in org.apache.shiro.authc">AuthenticationException</a></code> - an exception thrown by the Strategy implementation if it wishes the login process
                                 for the associated subject (user) to stop immediately.</dd>
</dl>
</li>
</ul>
<a id="merge(org.apache.shiro.authc.AuthenticationInfo,org.apache.shiro.authc.AuthenticationInfo)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>merge</h4>
<pre class="methodSignature">protected&nbsp;<a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/shiro/authc/pam/AbstractAuthenticationStrategy.html#line.80">merge</a>&#8203;(<a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;info,
                                   <a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;aggregate)</pre>
<div class="block">Merges the specified <code>info</code> argument into the <code>aggregate</code> argument and then returns an
 aggregate for continued use throughout the login process.
 <p/>
 This implementation merely checks to see if the specified <code>aggregate</code> argument is an instance of
 <a href="../MergableAuthenticationInfo.html" title="interface in org.apache.shiro.authc"><code>MergableAuthenticationInfo</code></a>, and if so, calls
 <code>aggregate.merge(info)</code>  If it is <em>not</em> an instance of
 <code>MergableAuthenticationInfo</code>, an <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang" class="externalLink"><code>IllegalArgumentException</code></a> is thrown.
 Can be overridden by subclasses for custom merging behavior if implementing the
 <a href="../MergableAuthenticationInfo.html" title="interface in org.apache.shiro.authc"><code>MergableAuthenticationInfo</code></a> is not desired for some reason.</div>
</li>
</ul>
<a id="afterAllAttempts(org.apache.shiro.authc.AuthenticationToken,org.apache.shiro.authc.AuthenticationInfo)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>afterAllAttempts</h4>
<pre class="methodSignature">public&nbsp;<a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/shiro/authc/pam/AbstractAuthenticationStrategy.html#line.93">afterAllAttempts</a>&#8203;(<a href="../AuthenticationToken.html" title="interface in org.apache.shiro.authc">AuthenticationToken</a>&nbsp;token,
                                           <a href="../AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;aggregate)
                                    throws <a href="../AuthenticationException.html" title="class in org.apache.shiro.authc">AuthenticationException</a></pre>
<div class="block">Simply returns the <code>aggregate</code> argument without modification.  Can be overridden for custom behavior.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="AuthenticationStrategy.html#afterAllAttempts(org.apache.shiro.authc.AuthenticationToken,org.apache.shiro.authc.AuthenticationInfo)">afterAllAttempts</a></code>&nbsp;in interface&nbsp;<code><a href="AuthenticationStrategy.html" title="interface in org.apache.shiro.authc.pam">AuthenticationStrategy</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>token</code> - the <code>AuthenticationToken</code> submitted for the subject attempting system log-in.</dd>
<dd><code>aggregate</code> - the aggregate <code>AuthenticationInfo</code> instance populated by all realms during the log-in attempt.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the final <code>AuthenticationInfo</code> object to return to the Authenticator.authenticate() caller.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../AuthenticationException.html" title="class in org.apache.shiro.authc">AuthenticationException</a></code> - if the Strategy implementation wishes to fail the authentication attempt.</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/AbstractAuthenticationStrategy.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>Field&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>
