<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.11) on Thu Oct 21 16:18:15 EDT 2021 -->
<title>AbstractRememberMeManager (Apache Shiro :: Core 1.8.0 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-10-21">
<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="AbstractRememberMeManager (Apache Shiro :: Core 1.8.0 API)";
        }
    }
    catch(err) {
    }
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":6,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":6,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":6,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract 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">
<!-- ========= 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/AbstractRememberMeManager.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.mgt</a></div>
<h2 title="Class AbstractRememberMeManager" class="title">Class AbstractRememberMeManager</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.mgt.AbstractRememberMeManager</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="RememberMeManager.html" title="interface in org.apache.shiro.mgt">RememberMeManager</a></code></dd>
</dl>
<hr>
<pre>public abstract class <a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.64">AbstractRememberMeManager</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="RememberMeManager.html" title="interface in org.apache.shiro.mgt">RememberMeManager</a></pre>
<div class="block">Abstract implementation of the <code>RememberMeManager</code> interface that handles
 <a href="#setSerializer(org.apache.shiro.io.Serializer)"><code>serialization</code></a> and
 <a href="#setCipherService(org.apache.shiro.crypto.CipherService)"><code>encryption</code></a> of the remembered user identity.
 <p/>
 The remembered identity storage location and details are left to subclasses.
 <h2>Default encryption key</h2>
 This implementation uses an <code>AesCipherService</code> for strong encryption by default.  It also
 uses a default generated symmetric key to both encrypt and decrypt data.  As AES is a symmetric cipher, the same
 <code>key</code> is used to both encrypt and decrypt data, BUT NOTE:
 <p/>
 Because Shiro is an open-source project, if anyone knew that you were using Shiro's default
 <code>key</code>, they could download/view the source, and with enough effort, reconstruct the <code>key</code>
 and decode encrypted data at will.
 <p/>
 Of course, this key is only really used to encrypt the remembered <code>PrincipalCollection</code> which is typically
 a user id or username.  So if you do not consider that sensitive information, and you think the default key still
 makes things 'sufficiently difficult', then you can ignore this issue.
 <p/>
 However, if you do feel this constitutes sensitive information, it is recommended that you provide your own
 <code>key</code> via the <a href="#setCipherKey(byte%5B%5D)"><code>setCipherKey</code></a> method to a key known only to your application,
 guaranteeing that no third party can decrypt your data.  You can generate your own key by calling the
 <code>CipherService</code>'s <code>generateNewKey</code> method
 and using that result as the <a href="#setCipherKey(byte%5B%5D)"><code>cipherKey</code></a> configuration attribute.</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 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">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()">AbstractRememberMeManager</a></span>()</code></th>
<td class="colLast">
<div class="block">Default constructor that initializes a <code>DefaultSerializer</code> as the <a href="#getSerializer()"><code>serializer</code></a> and
 an <code>AesCipherService</code> as the <a href="#getCipherService()"><code>cipherService</code></a>.</div>
</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="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract 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="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject">PrincipalCollection</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#convertBytesToPrincipals(byte%5B%5D,org.apache.shiro.subject.SubjectContext)">convertBytesToPrincipals</a></span>&#8203;(byte[]&nbsp;bytes,
                        <a href="../subject/SubjectContext.html" title="interface in org.apache.shiro.subject">SubjectContext</a>&nbsp;subjectContext)</code></th>
<td class="colLast">
<div class="block">If a <a href="#getCipherService()"><code>cipherService</code></a> is available, it will be used to first decrypt the byte array.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected byte[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#convertPrincipalsToBytes(org.apache.shiro.subject.PrincipalCollection)">convertPrincipalsToBytes</a></span>&#8203;(<a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject">PrincipalCollection</a>&nbsp;principals)</code></th>
<td class="colLast">
<div class="block">Converts the given principal collection the byte array that will be persisted to be 'remembered' later.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected byte[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decrypt(byte%5B%5D)">decrypt</a></span>&#8203;(byte[]&nbsp;encrypted)</code></th>
<td class="colLast">
<div class="block">Decrypts the byte array using the configured <a href="#getCipherService()"><code>cipherService</code></a>.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected <a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject">PrincipalCollection</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#deserialize(byte%5B%5D)">deserialize</a></span>&#8203;(byte[]&nbsp;serializedIdentity)</code></th>
<td class="colLast">
<div class="block">De-serializes the given byte array by using the <a href="#getSerializer()"><code>serializer</code></a>'s
 <code>deserialize</code> method.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>protected byte[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#encrypt(byte%5B%5D)">encrypt</a></span>&#8203;(byte[]&nbsp;serialized)</code></th>
<td class="colLast">
<div class="block">Encrypts the byte array by using the configured <a href="#getCipherService()"><code>cipherService</code></a>.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>protected abstract void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#forgetIdentity(org.apache.shiro.subject.Subject)">forgetIdentity</a></span>&#8203;(<a href="../subject/Subject.html" title="interface in org.apache.shiro.subject">Subject</a>&nbsp;subject)</code></th>
<td class="colLast">
<div class="block">Forgets (removes) any remembered identity data for the specified <a href="../subject/Subject.html" title="interface in org.apache.shiro.subject"><code>Subject</code></a> instance.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>byte[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getCipherKey()">getCipherKey</a></span>()</code></th>
<td class="colLast">
<div class="block">Convenience method that returns the cipher key to use for <em>both</em> encryption and decryption.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>org.apache.shiro.crypto.CipherService</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getCipherService()">getCipherService</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the <code>CipherService</code> to use for encrypting and decrypting serialized identity data to prevent easy
 inspection of Subject identity data.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>byte[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getDecryptionCipherKey()">getDecryptionCipherKey</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the decryption cipher key to use for decryption operations.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>byte[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getEncryptionCipherKey()">getEncryptionCipherKey</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the cipher key to use for encryption operations.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>protected <a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject">PrincipalCollection</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getIdentityToRemember(org.apache.shiro.subject.Subject,org.apache.shiro.authc.AuthenticationInfo)">getIdentityToRemember</a></span>&#8203;(<a href="../subject/Subject.html" title="interface in org.apache.shiro.subject">Subject</a>&nbsp;subject,
                     <a href="../authc/AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;info)</code></th>
<td class="colLast">
<div class="block">Returns <code>info</code>.<a href="../authc/AuthenticationInfo.html#getPrincipals()"><code>getPrincipals()</code></a> and
 ignores the <a href="../subject/Subject.html" title="interface in org.apache.shiro.subject"><code>Subject</code></a> argument.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject">PrincipalCollection</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getRememberedPrincipals(org.apache.shiro.subject.SubjectContext)">getRememberedPrincipals</a></span>&#8203;(<a href="../subject/SubjectContext.html" title="interface in org.apache.shiro.subject">SubjectContext</a>&nbsp;subjectContext)</code></th>
<td class="colLast">
<div class="block">Implements the interface method by first <a href="#getRememberedSerializedIdentity(org.apache.shiro.subject.SubjectContext)"><code>acquiring</code></a>
 the remembered serialized byte array.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>protected abstract byte[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getRememberedSerializedIdentity(org.apache.shiro.subject.SubjectContext)">getRememberedSerializedIdentity</a></span>&#8203;(<a href="../subject/SubjectContext.html" title="interface in org.apache.shiro.subject">SubjectContext</a>&nbsp;subjectContext)</code></th>
<td class="colLast">
<div class="block">Based on the given subject context data, retrieves the previously persisted serialized identity, or
 <code>null</code> if there is no available data.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>org.apache.shiro.io.Serializer&lt;<a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject">PrincipalCollection</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getSerializer()">getSerializer</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the <code>Serializer</code> used to serialize and deserialize <a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject"><code>PrincipalCollection</code></a> instances for
 persistent remember me storage.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isRememberMe(org.apache.shiro.authc.AuthenticationToken)">isRememberMe</a></span>&#8203;(<a href="../authc/AuthenticationToken.html" title="interface in org.apache.shiro.authc">AuthenticationToken</a>&nbsp;token)</code></th>
<td class="colLast">
<div class="block">Determines whether or not remember me services should be performed for the specified token.</div>
</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="#onFailedLogin(org.apache.shiro.subject.Subject,org.apache.shiro.authc.AuthenticationToken,org.apache.shiro.authc.AuthenticationException)">onFailedLogin</a></span>&#8203;(<a href="../subject/Subject.html" title="interface in org.apache.shiro.subject">Subject</a>&nbsp;subject,
             <a href="../authc/AuthenticationToken.html" title="interface in org.apache.shiro.authc">AuthenticationToken</a>&nbsp;token,
             <a href="../authc/AuthenticationException.html" title="class in org.apache.shiro.authc">AuthenticationException</a>&nbsp;ae)</code></th>
<td class="colLast">
<div class="block">Reacts to a failed login by immediately <a href="#forgetIdentity(org.apache.shiro.subject.Subject)"><code>forgetting</code></a> any
 previously remembered identity.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onLogout(org.apache.shiro.subject.Subject)">onLogout</a></span>&#8203;(<a href="../subject/Subject.html" title="interface in org.apache.shiro.subject">Subject</a>&nbsp;subject)</code></th>
<td class="colLast">
<div class="block">Reacts to a subject logging out of the application and immediately
 <a href="#forgetIdentity(org.apache.shiro.subject.Subject)"><code>forgets</code></a> any previously stored identity and returns.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>protected <a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject">PrincipalCollection</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onRememberedPrincipalFailure(java.lang.RuntimeException,org.apache.shiro.subject.SubjectContext)">onRememberedPrincipalFailure</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true" title="class or interface in java.lang" class="externalLink">RuntimeException</a>&nbsp;e,
                            <a href="../subject/SubjectContext.html" title="interface in org.apache.shiro.subject">SubjectContext</a>&nbsp;context)</code></th>
<td class="colLast">
<div class="block">Called when an exception is thrown while trying to retrieve principals.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onSuccessfulLogin(org.apache.shiro.subject.Subject,org.apache.shiro.authc.AuthenticationToken,org.apache.shiro.authc.AuthenticationInfo)">onSuccessfulLogin</a></span>&#8203;(<a href="../subject/Subject.html" title="interface in org.apache.shiro.subject">Subject</a>&nbsp;subject,
                 <a href="../authc/AuthenticationToken.html" title="interface in org.apache.shiro.authc">AuthenticationToken</a>&nbsp;token,
                 <a href="../authc/AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;info)</code></th>
<td class="colLast">
<div class="block">Reacts to the successful login attempt by first always <a href="#forgetIdentity(org.apache.shiro.subject.Subject)"><code>forgetting</code></a> any previously
 stored identity.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#rememberIdentity(org.apache.shiro.subject.Subject,org.apache.shiro.authc.AuthenticationToken,org.apache.shiro.authc.AuthenticationInfo)">rememberIdentity</a></span>&#8203;(<a href="../subject/Subject.html" title="interface in org.apache.shiro.subject">Subject</a>&nbsp;subject,
                <a href="../authc/AuthenticationToken.html" title="interface in org.apache.shiro.authc">AuthenticationToken</a>&nbsp;token,
                <a href="../authc/AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;authcInfo)</code></th>
<td class="colLast">
<div class="block">Remembers a subject-unique identity for retrieval later.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#rememberIdentity(org.apache.shiro.subject.Subject,org.apache.shiro.subject.PrincipalCollection)">rememberIdentity</a></span>&#8203;(<a href="../subject/Subject.html" title="interface in org.apache.shiro.subject">Subject</a>&nbsp;subject,
                <a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject">PrincipalCollection</a>&nbsp;accountPrincipals)</code></th>
<td class="colLast">
<div class="block">Remembers the specified account principals by first
 <a href="#convertPrincipalsToBytes(org.apache.shiro.subject.PrincipalCollection)"><code>converting</code></a> them to a byte
 array and then <a href="#rememberSerializedIdentity(org.apache.shiro.subject.Subject,byte%5B%5D)"><code>remembers</code></a> that
 byte array.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>protected abstract void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#rememberSerializedIdentity(org.apache.shiro.subject.Subject,byte%5B%5D)">rememberSerializedIdentity</a></span>&#8203;(<a href="../subject/Subject.html" title="interface in org.apache.shiro.subject">Subject</a>&nbsp;subject,
                          byte[]&nbsp;serialized)</code></th>
<td class="colLast">
<div class="block">Persists the identity bytes to a persistent store for retrieval later via the
 <a href="#getRememberedSerializedIdentity(org.apache.shiro.subject.SubjectContext)"><code>getRememberedSerializedIdentity(SubjectContext)</code></a> method.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>protected byte[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#serialize(org.apache.shiro.subject.PrincipalCollection)">serialize</a></span>&#8203;(<a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject">PrincipalCollection</a>&nbsp;principals)</code></th>
<td class="colLast">
<div class="block">Serializes the given <code>principals</code> by serializing them to a byte array by using the
 <a href="#getSerializer()"><code>serializer</code></a>'s <code>serialize</code> method.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setCipherKey(byte%5B%5D)">setCipherKey</a></span>&#8203;(byte[]&nbsp;cipherKey)</code></th>
<td class="colLast">
<div class="block">Convenience method that sets the cipher key to use for <em>both</em> encryption and decryption.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setCipherService(org.apache.shiro.crypto.CipherService)">setCipherService</a></span>&#8203;(org.apache.shiro.crypto.CipherService&nbsp;cipherService)</code></th>
<td class="colLast">
<div class="block">Sets the <code>CipherService</code> to use for encrypting and decrypting serialized identity data to prevent easy
 inspection of Subject identity data.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setDecryptionCipherKey(byte%5B%5D)">setDecryptionCipherKey</a></span>&#8203;(byte[]&nbsp;decryptionCipherKey)</code></th>
<td class="colLast">
<div class="block">Sets the decryption key to use for decryption operations.</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setEncryptionCipherKey(byte%5B%5D)">setEncryptionCipherKey</a></span>&#8203;(byte[]&nbsp;encryptionCipherKey)</code></th>
<td class="colLast">
<div class="block">Sets the encryption key to use for encryption operations.</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setSerializer(org.apache.shiro.io.Serializer)">setSerializer</a></span>&#8203;(org.apache.shiro.io.Serializer&lt;<a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject">PrincipalCollection</a>&gt;&nbsp;serializer)</code></th>
<td class="colLast">
<div class="block">Sets the <code>Serializer</code> used to serialize and deserialize <a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject"><code>PrincipalCollection</code></a> instances for
 persistent remember me storage.</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>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.apache.shiro.mgt.RememberMeManager">
<!--   -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.shiro.mgt.<a href="RememberMeManager.html" title="interface in org.apache.shiro.mgt">RememberMeManager</a></h3>
<code><a href="RememberMeManager.html#forgetIdentity(org.apache.shiro.subject.SubjectContext)">forgetIdentity</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>AbstractRememberMeManager</h4>
<pre>public&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.95">AbstractRememberMeManager</a>()</pre>
<div class="block">Default constructor that initializes a <code>DefaultSerializer</code> as the <a href="#getSerializer()"><code>serializer</code></a> and
 an <code>AesCipherService</code> as the <a href="#getCipherService()"><code>cipherService</code></a>.</div>
</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="getSerializer()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSerializer</h4>
<pre class="methodSignature">public&nbsp;org.apache.shiro.io.Serializer&lt;<a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject">PrincipalCollection</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.112">getSerializer</a>()</pre>
<div class="block">Returns the <code>Serializer</code> used to serialize and deserialize <a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject"><code>PrincipalCollection</code></a> instances for
 persistent remember me storage.
 <p/>
 Unless overridden by the <a href="#setSerializer(org.apache.shiro.io.Serializer)"><code>setSerializer(org.apache.shiro.io.Serializer&lt;org.apache.shiro.subject.PrincipalCollection&gt;)</code></a> method, the default instance is a
 <code>DefaultSerializer</code>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <code>Serializer</code> used to serialize and deserialize <a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject"><code>PrincipalCollection</code></a> instances for
         persistent remember me storage.</dd>
</dl>
</li>
</ul>
<a id="setSerializer(org.apache.shiro.io.Serializer)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setSerializer</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.125">setSerializer</a>&#8203;(org.apache.shiro.io.Serializer&lt;<a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject">PrincipalCollection</a>&gt;&nbsp;serializer)</pre>
<div class="block">Sets the <code>Serializer</code> used to serialize and deserialize <a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject"><code>PrincipalCollection</code></a> instances for
 persistent remember me storage.
 <p/>
 Unless overridden by this method, the default instance is a <code>DefaultSerializer</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serializer</code> - the <code>Serializer</code> used to serialize and deserialize <a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject"><code>PrincipalCollection</code></a> instances
                   for persistent remember me storage.</dd>
</dl>
</li>
</ul>
<a id="getCipherService()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCipherService</h4>
<pre class="methodSignature">public&nbsp;org.apache.shiro.crypto.CipherService&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.138">getCipherService</a>()</pre>
<div class="block">Returns the <code>CipherService</code> to use for encrypting and decrypting serialized identity data to prevent easy
 inspection of Subject identity data.
 <p/>
 Unless overridden by the <a href="#setCipherService(org.apache.shiro.crypto.CipherService)"><code>setCipherService(org.apache.shiro.crypto.CipherService)</code></a> method, the default instance is an <code>AesCipherService</code>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <code>Cipher</code> to use for encrypting and decrypting serialized identity data to prevent easy
         inspection of Subject identity data</dd>
</dl>
</li>
</ul>
<a id="setCipherService(org.apache.shiro.crypto.CipherService)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setCipherService</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.161">setCipherService</a>&#8203;(org.apache.shiro.crypto.CipherService&nbsp;cipherService)</pre>
<div class="block">Sets the <code>CipherService</code> to use for encrypting and decrypting serialized identity data to prevent easy
 inspection of Subject identity data.
 <p/>
 If the CipherService is a symmetric CipherService (using the same key for both encryption and decryption), you
 should set your key via the <a href="#setCipherKey(byte%5B%5D)"><code>setCipherKey(byte[])</code></a> method.
 <p/>
 If the CipherService is an asymmetric CipherService (different keys for encryption and decryption, such as
 public/private key pairs), you should set your encryption and decryption key via the respective
 <a href="#setEncryptionCipherKey(byte%5B%5D)"><code>setEncryptionCipherKey(byte[])</code></a> and <a href="#setDecryptionCipherKey(byte%5B%5D)"><code>setDecryptionCipherKey(byte[])</code></a> methods.
 <p/>
 <b>N.B.</b> Unless overridden by this method, the default CipherService instance is an
 <code>AesCipherService</code>.  This <code>RememberMeManager</code> implementation already has a configured symmetric key
 to use for encryption and decryption, but it is recommended to provide your own for added security.  See the
 class-level JavaDoc for more information and why it might be good to provide your own.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>cipherService</code> - the <code>CipherService</code> to use for encrypting and decrypting serialized identity data to
                      prevent easy inspection of Subject identity data.</dd>
</dl>
</li>
</ul>
<a id="getEncryptionCipherKey()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getEncryptionCipherKey</h4>
<pre class="methodSignature">public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.171">getEncryptionCipherKey</a>()</pre>
<div class="block">Returns the cipher key to use for encryption operations.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the cipher key to use for encryption operations.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#setCipherService(org.apache.shiro.crypto.CipherService)"><code>for a description of the various  methods.</code></a></dd>
</dl>
</li>
</ul>
<a id="setEncryptionCipherKey(byte[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setEncryptionCipherKey</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.181">setEncryptionCipherKey</a>&#8203;(byte[]&nbsp;encryptionCipherKey)</pre>
<div class="block">Sets the encryption key to use for encryption operations.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>encryptionCipherKey</code> - the encryption key to use for encryption operations.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#setCipherService(org.apache.shiro.crypto.CipherService)"><code>for a description of the various  methods.</code></a></dd>
</dl>
</li>
</ul>
<a id="getDecryptionCipherKey()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDecryptionCipherKey</h4>
<pre class="methodSignature">public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.191">getDecryptionCipherKey</a>()</pre>
<div class="block">Returns the decryption cipher key to use for decryption operations.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the cipher key to use for decryption operations.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#setCipherService(org.apache.shiro.crypto.CipherService)"><code>for a description of the various  methods.</code></a></dd>
</dl>
</li>
</ul>
<a id="setDecryptionCipherKey(byte[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setDecryptionCipherKey</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.201">setDecryptionCipherKey</a>&#8203;(byte[]&nbsp;decryptionCipherKey)</pre>
<div class="block">Sets the decryption key to use for decryption operations.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>decryptionCipherKey</code> - the decryption key to use for decryption operations.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#setCipherService(org.apache.shiro.crypto.CipherService)"><code>for a description of the various  methods.</code></a></dd>
</dl>
</li>
</ul>
<a id="getCipherKey()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCipherKey</h4>
<pre class="methodSignature">public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.218">getCipherKey</a>()</pre>
<div class="block">Convenience method that returns the cipher key to use for <em>both</em> encryption and decryption.
 <p/>
 <b>N.B.</b> This method can only be called if the underlying <a href="#getCipherService()"><code>cipherService</code></a> is a symmetric
 CipherService which by definition uses the same key for both encryption and decryption.  If using an asymmetric
 CipherService public/private key pair, you cannot use this method, and should instead use the
 <a href="#getEncryptionCipherKey()"><code>getEncryptionCipherKey()</code></a> and <a href="#getDecryptionCipherKey()"><code>getDecryptionCipherKey()</code></a> methods individually.
 <p/>
 The default <code>AesCipherService</code> instance is a symmetric cipher service, so this method can be used if you are
 using the default.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the symmetric cipher key used for both encryption and decryption.</dd>
</dl>
</li>
</ul>
<a id="setCipherKey(byte[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setCipherKey</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.237">setCipherKey</a>&#8203;(byte[]&nbsp;cipherKey)</pre>
<div class="block">Convenience method that sets the cipher key to use for <em>both</em> encryption and decryption.
 <p/>
 <b>N.B.</b> This method can only be called if the underlying <a href="#getCipherService()"><code>cipherService</code></a> is a
 symmetric CipherService?which by definition uses the same key for both encryption and decryption.  If using an
 asymmetric CipherService?(such as a public/private key pair), you cannot use this method, and should instead use
 the <a href="#setEncryptionCipherKey(byte%5B%5D)"><code>setEncryptionCipherKey(byte[])</code></a> and <a href="#setDecryptionCipherKey(byte%5B%5D)"><code>setDecryptionCipherKey(byte[])</code></a> methods individually.
 <p/>
 The default <code>AesCipherService</code> instance is a symmetric CipherService, so this method can be used if you
 are using the default.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>cipherKey</code> - the symmetric cipher key to use for both encryption and decryption.</dd>
</dl>
</li>
</ul>
<a id="forgetIdentity(org.apache.shiro.subject.Subject)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>forgetIdentity</h4>
<pre class="methodSignature">protected abstract&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.250">forgetIdentity</a>&#8203;(<a href="../subject/Subject.html" title="interface in org.apache.shiro.subject">Subject</a>&nbsp;subject)</pre>
<div class="block">Forgets (removes) any remembered identity data for the specified <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>subject</code> - the subject instance for which identity data should be forgotten from the underlying persistence
                mechanism.</dd>
</dl>
</li>
</ul>
<a id="isRememberMe(org.apache.shiro.authc.AuthenticationToken)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isRememberMe</h4>
<pre class="methodSignature">protected&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.265">isRememberMe</a>&#8203;(<a href="../authc/AuthenticationToken.html" title="interface in org.apache.shiro.authc">AuthenticationToken</a>&nbsp;token)</pre>
<div class="block">Determines whether or not remember me services should be performed for the specified token.  This method returns
 <code>true</code> iff:
 <ol>
 <li>The token is not <code>null</code> and</li>
 <li>The token is an <code>instanceof</code> <a href="../authc/RememberMeAuthenticationToken.html" title="interface in org.apache.shiro.authc"><code>RememberMeAuthenticationToken</code></a> and</li>
 <li><code>token</code>.<a href="../authc/RememberMeAuthenticationToken.html#isRememberMe()"><code>isRememberMe()</code></a> is
 <code>true</code></li>
 </ol></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>token</code> - the authentication token submitted during the successful authentication attempt.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if remember me services should be performed as a result of the successful authentication attempt.</dd>
</dl>
</li>
</ul>
<a id="onSuccessfulLogin(org.apache.shiro.subject.Subject,org.apache.shiro.authc.AuthenticationToken,org.apache.shiro.authc.AuthenticationInfo)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onSuccessfulLogin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.281">onSuccessfulLogin</a>&#8203;(<a href="../subject/Subject.html" title="interface in org.apache.shiro.subject">Subject</a>&nbsp;subject,
                              <a href="../authc/AuthenticationToken.html" title="interface in org.apache.shiro.authc">AuthenticationToken</a>&nbsp;token,
                              <a href="../authc/AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;info)</pre>
<div class="block">Reacts to the successful login attempt by first always <a href="#forgetIdentity(org.apache.shiro.subject.Subject)"><code>forgetting</code></a> any previously
 stored identity.  Then if the <code>token</code>
 <a href="#isRememberMe(org.apache.shiro.authc.AuthenticationToken)"><code>is a RememberMe</code></a> token, the associated identity
 will be <a href="#rememberIdentity(org.apache.shiro.subject.Subject,org.apache.shiro.authc.AuthenticationToken,org.apache.shiro.authc.AuthenticationInfo)"><code>remembered</code></a>
 for later retrieval during a new user session.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="RememberMeManager.html#onSuccessfulLogin(org.apache.shiro.subject.Subject,org.apache.shiro.authc.AuthenticationToken,org.apache.shiro.authc.AuthenticationInfo)">onSuccessfulLogin</a></code>&nbsp;in interface&nbsp;<code><a href="RememberMeManager.html" title="interface in org.apache.shiro.mgt">RememberMeManager</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>subject</code> - the subject for which the principals are being remembered.</dd>
<dd><code>token</code> - the token that resulted in a successful authentication attempt.</dd>
<dd><code>info</code> - the authentication info resulting from the successful authentication attempt.</dd>
</dl>
</li>
</ul>
<a id="rememberIdentity(org.apache.shiro.subject.Subject,org.apache.shiro.authc.AuthenticationToken,org.apache.shiro.authc.AuthenticationInfo)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rememberIdentity</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.309">rememberIdentity</a>&#8203;(<a href="../subject/Subject.html" title="interface in org.apache.shiro.subject">Subject</a>&nbsp;subject,
                             <a href="../authc/AuthenticationToken.html" title="interface in org.apache.shiro.authc">AuthenticationToken</a>&nbsp;token,
                             <a href="../authc/AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;authcInfo)</pre>
<div class="block">Remembers a subject-unique identity for retrieval later.  This implementation first
 <a href="#getIdentityToRemember(org.apache.shiro.subject.Subject,org.apache.shiro.authc.AuthenticationInfo)"><code>resolves</code></a> the exact
 <a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject"><code>principals</code></a> to remember.  It then remembers the principals by calling
 <a href="#rememberIdentity(org.apache.shiro.subject.Subject,org.apache.shiro.subject.PrincipalCollection)"><code>rememberIdentity(org.apache.shiro.subject.Subject, org.apache.shiro.subject.PrincipalCollection)</code></a>.
 <p/>
 This implementation ignores the <a href="../authc/AuthenticationToken.html" title="interface in org.apache.shiro.authc"><code>AuthenticationToken</code></a> argument, but it is available to subclasses if
 necessary for custom logic.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>subject</code> - the subject for which the principals are being remembered.</dd>
<dd><code>token</code> - the token that resulted in a successful authentication attempt.</dd>
<dd><code>authcInfo</code> - the authentication info resulting from the successful authentication attempt.</dd>
</dl>
</li>
</ul>
<a id="getIdentityToRemember(org.apache.shiro.subject.Subject,org.apache.shiro.authc.AuthenticationInfo)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getIdentityToRemember</h4>
<pre class="methodSignature">protected&nbsp;<a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject">PrincipalCollection</a>&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.322">getIdentityToRemember</a>&#8203;(<a href="../subject/Subject.html" title="interface in org.apache.shiro.subject">Subject</a>&nbsp;subject,
                                                    <a href="../authc/AuthenticationInfo.html" title="interface in org.apache.shiro.authc">AuthenticationInfo</a>&nbsp;info)</pre>
<div class="block">Returns <code>info</code>.<a href="../authc/AuthenticationInfo.html#getPrincipals()"><code>getPrincipals()</code></a> and
 ignores the <a href="../subject/Subject.html" title="interface in org.apache.shiro.subject"><code>Subject</code></a> argument.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>subject</code> - the subject for which the principals are being remembered.</dd>
<dd><code>info</code> - the authentication info resulting from the successful authentication attempt.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <code>PrincipalCollection</code> to remember.</dd>
</dl>
</li>
</ul>
<a id="rememberIdentity(org.apache.shiro.subject.Subject,org.apache.shiro.subject.PrincipalCollection)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rememberIdentity</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.335">rememberIdentity</a>&#8203;(<a href="../subject/Subject.html" title="interface in org.apache.shiro.subject">Subject</a>&nbsp;subject,
                                <a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject">PrincipalCollection</a>&nbsp;accountPrincipals)</pre>
<div class="block">Remembers the specified account principals by first
 <a href="#convertPrincipalsToBytes(org.apache.shiro.subject.PrincipalCollection)"><code>converting</code></a> them to a byte
 array and then <a href="#rememberSerializedIdentity(org.apache.shiro.subject.Subject,byte%5B%5D)"><code>remembers</code></a> that
 byte array.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>subject</code> - the subject for which the principals are being remembered.</dd>
<dd><code>accountPrincipals</code> - the principals to remember for retrieval later.</dd>
</dl>
</li>
</ul>
<a id="convertPrincipalsToBytes(org.apache.shiro.subject.PrincipalCollection)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>convertPrincipalsToBytes</h4>
<pre class="methodSignature">protected&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.349">convertPrincipalsToBytes</a>&#8203;(<a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject">PrincipalCollection</a>&nbsp;principals)</pre>
<div class="block">Converts the given principal collection the byte array that will be persisted to be 'remembered' later.
 <p/>
 This implementation first <a href="#serialize(org.apache.shiro.subject.PrincipalCollection)"><code>serializes</code></a> the
 principals to a byte array and then <a href="#encrypt(byte%5B%5D)"><code>encrypts</code></a> that byte array.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>principals</code> - the <code>PrincipalCollection</code> to convert to a byte array</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the representative byte array to be persisted for remember me functionality.</dd>
</dl>
</li>
</ul>
<a id="rememberSerializedIdentity(org.apache.shiro.subject.Subject,byte[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rememberSerializedIdentity</h4>
<pre class="methodSignature">protected abstract&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.364">rememberSerializedIdentity</a>&#8203;(<a href="../subject/Subject.html" title="interface in org.apache.shiro.subject">Subject</a>&nbsp;subject,
                                                   byte[]&nbsp;serialized)</pre>
<div class="block">Persists the identity bytes to a persistent store for retrieval later via the
 <a href="#getRememberedSerializedIdentity(org.apache.shiro.subject.SubjectContext)"><code>getRememberedSerializedIdentity(SubjectContext)</code></a> method.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>subject</code> - the Subject for which the identity is being serialized.</dd>
<dd><code>serialized</code> - the serialized bytes to be persisted.</dd>
</dl>
</li>
</ul>
<a id="getRememberedPrincipals(org.apache.shiro.subject.SubjectContext)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRememberedPrincipals</h4>
<pre class="methodSignature">public&nbsp;<a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject">PrincipalCollection</a>&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.380">getRememberedPrincipals</a>&#8203;(<a href="../subject/SubjectContext.html" title="interface in org.apache.shiro.subject">SubjectContext</a>&nbsp;subjectContext)</pre>
<div class="block">Implements the interface method by first <a href="#getRememberedSerializedIdentity(org.apache.shiro.subject.SubjectContext)"><code>acquiring</code></a>
 the remembered serialized byte array.  Then it <a href="#convertBytesToPrincipals(byte%5B%5D,org.apache.shiro.subject.SubjectContext)"><code>converts</code></a>
 them and returns the re-constituted <a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject"><code>PrincipalCollection</code></a>.  If no remembered principals could be
 obtained, <code>null</code> is returned.
 <p/>
 If any exceptions are thrown, the <a href="#onRememberedPrincipalFailure(java.lang.RuntimeException,org.apache.shiro.subject.SubjectContext)"><code>onRememberedPrincipalFailure(RuntimeException, SubjectContext)</code></a> method
 is called to allow any necessary post-processing (such as immediately removing any previously remembered
 values for safety).</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="RememberMeManager.html#getRememberedPrincipals(org.apache.shiro.subject.SubjectContext)">getRememberedPrincipals</a></code>&nbsp;in interface&nbsp;<code><a href="RememberMeManager.html" title="interface in org.apache.shiro.mgt">RememberMeManager</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>subjectContext</code> - the contextual data, usually provided by a <a href="../subject/Subject.Builder.html" title="class in org.apache.shiro.subject"><code>Subject.Builder</code></a> implementation, that
                       is being used to construct a <a href="../subject/Subject.html" title="interface in org.apache.shiro.subject"><code>Subject</code></a> instance.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the remembered principals or <code>null</code> if none could be acquired.</dd>
</dl>
</li>
</ul>
<a id="getRememberedSerializedIdentity(org.apache.shiro.subject.SubjectContext)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRememberedSerializedIdentity</h4>
<pre class="methodSignature">protected abstract&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.406">getRememberedSerializedIdentity</a>&#8203;(<a href="../subject/SubjectContext.html" title="interface in org.apache.shiro.subject">SubjectContext</a>&nbsp;subjectContext)</pre>
<div class="block">Based on the given subject context data, retrieves the previously persisted serialized identity, or
 <code>null</code> if there is no available data.  The context map is usually populated by a <a href="../subject/Subject.Builder.html" title="class in org.apache.shiro.subject"><code>Subject.Builder</code></a>
 implementation.  See the <a href="SubjectFactory.html" title="interface in org.apache.shiro.mgt"><code>SubjectFactory</code></a> class constants for Shiro's known map keys.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>subjectContext</code> - the contextual data, usually provided by a <a href="../subject/Subject.Builder.html" title="class in org.apache.shiro.subject"><code>Subject.Builder</code></a> implementation, that
                       is being used to construct a <a href="../subject/Subject.html" title="interface in org.apache.shiro.subject"><code>Subject</code></a> instance.  To be used to assist with data
                       lookup.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the previously persisted serialized identity, or <code>null</code> if there is no available data for the
         Subject.</dd>
</dl>
</li>
</ul>
<a id="convertBytesToPrincipals(byte[],org.apache.shiro.subject.SubjectContext)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>convertBytesToPrincipals</h4>
<pre class="methodSignature">protected&nbsp;<a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject">PrincipalCollection</a>&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.417">convertBytesToPrincipals</a>&#8203;(byte[]&nbsp;bytes,
                                                       <a href="../subject/SubjectContext.html" title="interface in org.apache.shiro.subject">SubjectContext</a>&nbsp;subjectContext)</pre>
<div class="block">If a <a href="#getCipherService()"><code>cipherService</code></a> is available, it will be used to first decrypt the byte array.
 Then the bytes are then <a href="#deserialize(byte%5B%5D)"><code>deserialized</code></a> and then returned.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>bytes</code> - the bytes to decrypt if necessary and then deserialize.</dd>
<dd><code>subjectContext</code> - the contextual data, usually provided by a <a href="../subject/Subject.Builder.html" title="class in org.apache.shiro.subject"><code>Subject.Builder</code></a> implementation, that
                       is being used to construct a <a href="../subject/Subject.html" title="interface in org.apache.shiro.subject"><code>Subject</code></a> instance.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the de-serialized and possibly decrypted principals</dd>
</dl>
</li>
</ul>
<a id="onRememberedPrincipalFailure(java.lang.RuntimeException,org.apache.shiro.subject.SubjectContext)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onRememberedPrincipalFailure</h4>
<pre class="methodSignature">protected&nbsp;<a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject">PrincipalCollection</a>&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.441">onRememberedPrincipalFailure</a>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true" title="class or interface in java.lang" class="externalLink">RuntimeException</a>&nbsp;e,
                                                           <a href="../subject/SubjectContext.html" title="interface in org.apache.shiro.subject">SubjectContext</a>&nbsp;context)</pre>
<div class="block">Called when an exception is thrown while trying to retrieve principals.  The default implementation logs a
 warning message and forgets ('unremembers') the problem identity by calling
 <a href="RememberMeManager.html#forgetIdentity(org.apache.shiro.subject.SubjectContext)"><code>forgetIdentity(context)</code></a> and then immediately re-throws the
 exception to allow the calling component to react accordingly.
 <p/>
 This method implementation never returns an
 object - it always rethrows, but can be overridden by subclasses for custom handling behavior.
 <p/>
 This most commonly would be called when an encryption key is updated and old principals are retrieved that have
 been encrypted with the previous key.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>e</code> - the exception that was thrown.</dd>
<dd><code>context</code> - the contextual data, usually provided by a <a href="../subject/Subject.Builder.html" title="class in org.apache.shiro.subject"><code>Subject.Builder</code></a> implementation, that
                is being used to construct a <a href="../subject/Subject.html" title="interface in org.apache.shiro.subject"><code>Subject</code></a> instance.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>nothing - the original <code>RuntimeException</code> is propagated in all cases.</dd>
</dl>
</li>
</ul>
<a id="encrypt(byte[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>encrypt</h4>
<pre class="methodSignature">protected&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.462">encrypt</a>&#8203;(byte[]&nbsp;serialized)</pre>
<div class="block">Encrypts the byte array by using the configured <a href="#getCipherService()"><code>cipherService</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serialized</code> - the serialized object byte array to be encrypted</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an encrypted byte array returned by the configured <a href="#getCipherService()"><code>() cipher</code></a>.</dd>
</dl>
</li>
</ul>
<a id="decrypt(byte[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decrypt</h4>
<pre class="methodSignature">protected&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.478">decrypt</a>&#8203;(byte[]&nbsp;encrypted)</pre>
<div class="block">Decrypts the byte array using the configured <a href="#getCipherService()"><code>cipherService</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>encrypted</code> - the encrypted byte array to decrypt</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the decrypted byte array returned by the configured <a href="#getCipherService()"><code>() cipher</code></a>.</dd>
</dl>
</li>
</ul>
<a id="serialize(org.apache.shiro.subject.PrincipalCollection)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>serialize</h4>
<pre class="methodSignature">protected&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.495">serialize</a>&#8203;(<a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject">PrincipalCollection</a>&nbsp;principals)</pre>
<div class="block">Serializes the given <code>principals</code> by serializing them to a byte array by using the
 <a href="#getSerializer()"><code>serializer</code></a>'s <code>serialize</code> method.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>principals</code> - the principal collection to serialize to a byte array</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the serialized principal collection in the form of a byte array</dd>
</dl>
</li>
</ul>
<a id="deserialize(byte[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deserialize</h4>
<pre class="methodSignature">protected&nbsp;<a href="../subject/PrincipalCollection.html" title="interface in org.apache.shiro.subject">PrincipalCollection</a>&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.506">deserialize</a>&#8203;(byte[]&nbsp;serializedIdentity)</pre>
<div class="block">De-serializes the given byte array by using the <a href="#getSerializer()"><code>serializer</code></a>'s
 <code>deserialize</code> method.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serializedIdentity</code> - the previously serialized <code>PrincipalCollection</code> as a byte array</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the de-serialized (reconstituted) <code>PrincipalCollection</code></dd>
</dl>
</li>
</ul>
<a id="onFailedLogin(org.apache.shiro.subject.Subject,org.apache.shiro.authc.AuthenticationToken,org.apache.shiro.authc.AuthenticationException)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onFailedLogin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.519">onFailedLogin</a>&#8203;(<a href="../subject/Subject.html" title="interface in org.apache.shiro.subject">Subject</a>&nbsp;subject,
                          <a href="../authc/AuthenticationToken.html" title="interface in org.apache.shiro.authc">AuthenticationToken</a>&nbsp;token,
                          <a href="../authc/AuthenticationException.html" title="class in org.apache.shiro.authc">AuthenticationException</a>&nbsp;ae)</pre>
<div class="block">Reacts to a failed login by immediately <a href="#forgetIdentity(org.apache.shiro.subject.Subject)"><code>forgetting</code></a> any
 previously remembered identity.  This is an additional security feature to prevent any remenant identity data
 from being retained in case the authentication attempt is not being executed by the expected user.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="RememberMeManager.html#onFailedLogin(org.apache.shiro.subject.Subject,org.apache.shiro.authc.AuthenticationToken,org.apache.shiro.authc.AuthenticationException)">onFailedLogin</a></code>&nbsp;in interface&nbsp;<code><a href="RememberMeManager.html" title="interface in org.apache.shiro.mgt">RememberMeManager</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>subject</code> - the subject which executed the failed login attempt</dd>
<dd><code>token</code> - the authentication token resulting in a failed login attempt - ignored by this implementation</dd>
<dd><code>ae</code> - the exception thrown as a result of the failed login attempt - ignored by this implementation</dd>
</dl>
</li>
</ul>
<a id="onLogout(org.apache.shiro.subject.Subject)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>onLogout</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/shiro/mgt/AbstractRememberMeManager.html#line.529">onLogout</a>&#8203;(<a href="../subject/Subject.html" title="interface in org.apache.shiro.subject">Subject</a>&nbsp;subject)</pre>
<div class="block">Reacts to a subject logging out of the application and immediately
 <a href="#forgetIdentity(org.apache.shiro.subject.Subject)"><code>forgets</code></a> any previously stored identity and returns.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="RememberMeManager.html#onLogout(org.apache.shiro.subject.Subject)">onLogout</a></code>&nbsp;in interface&nbsp;<code><a href="RememberMeManager.html" title="interface in org.apache.shiro.mgt">RememberMeManager</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>subject</code> - the subject logging out.</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/AbstractRememberMeManager.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;2021 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>
