<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_92) on Mon Nov 14 15:04:23 EST 2016 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Deprecated List (Apache Shiro 1.4.0-RC2 API)</title>
<meta name="date" content="2016-11-14">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="Deprecated List (Apache Shiro 1.4.0-RC2 API)";
        }
    }
    catch(err) {
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>

<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="overview-summary.html">Overview</a></li>
<li>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="overview-tree.html">Tree</a></li>
<li class="navBarCell1Rev">Deprecated</li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?deprecated-list.html" target="_top">Frames</a></li>
<li><a href="deprecated-list.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 title="Deprecated API" class="title">Deprecated API</h1>
<h2 title="Contents">Contents</h2>
<ul>
<li><a href="#class">Deprecated Classes</a></li>
<li><a href="#exception">Deprecated Exceptions</a></li>
<li><a href="#field">Deprecated Fields</a></li>
<li><a href="#method">Deprecated Methods</a></li>
<li><a href="#constructor">Deprecated Constructors</a></li>
</ul>
</div>
<div class="contentContainer"><a name="class">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table class="deprecatedSummary" border="0" cellpadding="3" cellspacing="0" summary="Deprecated Classes table, listing deprecated classes, and an explanation">
<caption><span>Deprecated Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Class and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/crypto/hash/AbstractHash.html" title="class in org.apache.shiro.crypto.hash">org.apache.shiro.crypto.hash.AbstractHash</a>
<div class="block"><span class="deprecationComment">in Shiro 1.1 in favor of using the concrete <a href="org/apache/shiro/crypto/hash/SimpleHash.html" title="class in org.apache.shiro.crypto.hash"><code>SimpleHash</code></a> implementation directly.</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/shiro/cas/CasFilter.html" title="class in org.apache.shiro.cas">org.apache.shiro.cas.CasFilter</a>
<div class="block"><span class="deprecationComment">replaced with Shiro integration in <a href="https://github.com/bujiio/buji-pac4j">buji-pac4j</a>.</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/cas/CasRealm.html" title="class in org.apache.shiro.cas">org.apache.shiro.cas.CasRealm</a>
<div class="block"><span class="deprecationComment">replaced with Shiro integration in <a href="https://github.com/bujiio/buji-pac4j">buji-pac4j</a>.</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/shiro/cas/CasSubjectFactory.html" title="class in org.apache.shiro.cas">org.apache.shiro.cas.CasSubjectFactory</a>
<div class="block"><span class="deprecationComment">replaced with Shiro integration in <a href="https://github.com/bujiio/buji-pac4j">buji-pac4j</a>.</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/cas/CasToken.html" title="class in org.apache.shiro.cas">org.apache.shiro.cas.CasToken</a>
<div class="block"><span class="deprecationComment">replaced with Shiro integration in <a href="https://github.com/bujiio/buji-pac4j">buji-pac4j</a>.</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/shiro/realm/ldap/DefaultLdapContextFactory.html" title="class in org.apache.shiro.realm.ldap">org.apache.shiro.realm.ldap.DefaultLdapContextFactory</a>
<div class="block"><span class="deprecationComment">replaced by the <a href="org/apache/shiro/realm/ldap/JndiLdapContextFactory.html" title="class in org.apache.shiro.realm.ldap"><code>JndiLdapContextFactory</code></a> implementation.  This implementation will be removed
 prior to Shiro 2.0</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/config/IniFactorySupport.html" title="class in org.apache.shiro.config">org.apache.shiro.config.IniFactorySupport</a>
<div class="block"><span class="deprecationComment">use Shiro's <code>Environment</code> mechanisms instead.</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/shiro/config/IniSecurityManagerFactory.html" title="class in org.apache.shiro.config">org.apache.shiro.config.IniSecurityManagerFactory</a>
<div class="block"><span class="deprecationComment">use Shiro's <code>Environment</code> mechanisms instead.</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/web/servlet/IniShiroFilter.html" title="class in org.apache.shiro.web.servlet">org.apache.shiro.web.servlet.IniShiroFilter</a>
<div class="block"><span class="deprecationComment">in 1.2 in favor of using the <a href="org/apache/shiro/web/servlet/ShiroFilter.html" title="class in org.apache.shiro.web.servlet"><code>ShiroFilter</code></a></span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/shiro/realm/ldap/JndiLdapRealm.html" title="class in org.apache.shiro.realm.ldap">org.apache.shiro.realm.ldap.JndiLdapRealm</a>
<div class="block"><span class="deprecationComment">Renamed to <a href="org/apache/shiro/realm/ldap/DefaultLdapRealm.html" title="class in org.apache.shiro.realm.ldap"><code>DefaultLdapRealm</code></a>, this class will be removed prior to 2.0</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/authc/credential/Md2CredentialsMatcher.html" title="class in org.apache.shiro.authc.credential">org.apache.shiro.authc.credential.Md2CredentialsMatcher</a>
<div class="block"><span class="deprecationComment">since 1.1 - use the HashedCredentialsMatcher directly and set its
             <a href="org/apache/shiro/authc/credential/HashedCredentialsMatcher.html#setHashAlgorithmName-java.lang.String-"><code>hashAlgorithmName</code></a> property.</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/shiro/authc/credential/Md5CredentialsMatcher.html" title="class in org.apache.shiro.authc.credential">org.apache.shiro.authc.credential.Md5CredentialsMatcher</a>
<div class="block"><span class="deprecationComment">since 1.1 - use the HashedCredentialsMatcher directly and set its
             <a href="org/apache/shiro/authc/credential/HashedCredentialsMatcher.html#setHashAlgorithmName-java.lang.String-"><code>hashAlgorithmName</code></a> property.</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/authc/credential/Sha1CredentialsMatcher.html" title="class in org.apache.shiro.authc.credential">org.apache.shiro.authc.credential.Sha1CredentialsMatcher</a>
<div class="block"><span class="deprecationComment">since 1.1 - use the HashedCredentialsMatcher directly and set its
             <a href="org/apache/shiro/authc/credential/HashedCredentialsMatcher.html#setHashAlgorithmName-java.lang.String-"><code>hashAlgorithmName</code></a> property.</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/shiro/authc/credential/Sha256CredentialsMatcher.html" title="class in org.apache.shiro.authc.credential">org.apache.shiro.authc.credential.Sha256CredentialsMatcher</a>
<div class="block"><span class="deprecationComment">since 1.1 - use the HashedCredentialsMatcher directly and set its
             <a href="org/apache/shiro/authc/credential/HashedCredentialsMatcher.html#setHashAlgorithmName-java.lang.String-"><code>hashAlgorithmName</code></a> property.</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/authc/credential/Sha384CredentialsMatcher.html" title="class in org.apache.shiro.authc.credential">org.apache.shiro.authc.credential.Sha384CredentialsMatcher</a>
<div class="block"><span class="deprecationComment">since 1.1 - use the HashedCredentialsMatcher directly and set its
             <a href="org/apache/shiro/authc/credential/HashedCredentialsMatcher.html#setHashAlgorithmName-java.lang.String-"><code>hashAlgorithmName</code></a> property.</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/shiro/authc/credential/Sha512CredentialsMatcher.html" title="class in org.apache.shiro.authc.credential">org.apache.shiro.authc.credential.Sha512CredentialsMatcher</a>
<div class="block"><span class="deprecationComment">since 1.1 - use the HashedCredentialsMatcher directly and set its
             <a href="org/apache/shiro/authc/credential/HashedCredentialsMatcher.html#setHashAlgorithmName-java.lang.String-"><code>hashAlgorithmName</code></a> property.</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/web/config/WebIniSecurityManagerFactory.html" title="class in org.apache.shiro.web.config">org.apache.shiro.web.config.WebIniSecurityManagerFactory</a>
<div class="block"><span class="deprecationComment">use Shiro's <code>Environment</code> mechanisms instead.</span></div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="exception">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table class="deprecatedSummary" border="0" cellpadding="3" cellspacing="0" summary="Deprecated Exceptions table, listing deprecated exceptions, and an explanation">
<caption><span>Deprecated Exceptions</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Exceptions and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/cas/CasAuthenticationException.html" title="class in org.apache.shiro.cas">org.apache.shiro.cas.CasAuthenticationException</a>
<div class="block"><span class="deprecationComment">replaced with Shiro integration in <a href="https://github.com/bujiio/buji-pac4j">buji-pac4j</a>.</span></div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="field">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table class="deprecatedSummary" border="0" cellpadding="3" cellspacing="0" summary="Deprecated Fields table, listing deprecated fields, and an explanation">
<caption><span>Deprecated Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Field and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/web/mgt/DefaultWebSecurityManager.html#HTTP_SESSION_MODE">org.apache.shiro.web.mgt.DefaultWebSecurityManager.HTTP_SESSION_MODE</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/shiro/web/mgt/DefaultWebSecurityManager.html#NATIVE_SESSION_MODE">org.apache.shiro.web.mgt.DefaultWebSecurityManager.NATIVE_SESSION_MODE</a></td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="method">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table class="deprecatedSummary" border="0" cellpadding="3" cellspacing="0" summary="Deprecated Methods table, listing deprecated methods, and an explanation">
<caption><span>Deprecated Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Method and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/guice/web/ShiroWebModule.html#addFilterChain-java.lang.String-com.google.inject.Key...-">org.apache.shiro.guice.web.ShiroWebModule.addFilterChain(String, Key&lt;? extends Filter&gt;...)</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/shiro/mgt/DefaultSecurityManager.html#bind-org.apache.shiro.subject.Subject-">org.apache.shiro.mgt.DefaultSecurityManager.bind(Subject)</a>
<div class="block"><span class="deprecationComment">in favor of <a href="org/apache/shiro/mgt/DefaultSecurityManager.html#save-org.apache.shiro.subject.Subject-"><code>save(subject)</code></a>.</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/guice/web/ShiroWebModule.html#config-java.lang.Class-java.lang.String-">org.apache.shiro.guice.web.ShiroWebModule.config(Class&lt;T&gt;, String)</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/shiro/guice/web/ShiroWebModule.html#config-com.google.inject.Key-java.lang.String-">org.apache.shiro.guice.web.ShiroWebModule.config(Key&lt;T&gt;, String)</a></td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/guice/web/ShiroWebModule.html#config-com.google.inject.TypeLiteral-java.lang.String-">org.apache.shiro.guice.web.ShiroWebModule.config(TypeLiteral&lt;T&gt;, String)</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/shiro/realm/ldap/LdapContextFactory.html#getLdapContext-java.lang.String-java.lang.String-">org.apache.shiro.realm.ldap.LdapContextFactory.getLdapContext(String, String)</a>
<div class="block"><span class="deprecationComment">the <a href="org/apache/shiro/realm/ldap/LdapContextFactory.html#getLdapContext-java.lang.Object-java.lang.Object-"><code>LdapContextFactory.getLdapContext(Object, Object)</code></a> method should be used in all cases to ensure more than
 String principals and credentials can be used.</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/realm/ldap/JndiLdapContextFactory.html#getLdapContext-java.lang.String-java.lang.String-">org.apache.shiro.realm.ldap.JndiLdapContextFactory.getLdapContext(String, String)</a>
<div class="block"><span class="deprecationComment">the <a href="org/apache/shiro/realm/ldap/JndiLdapContextFactory.html#getLdapContext-java.lang.Object-java.lang.Object-"><code>JndiLdapContextFactory.getLdapContext(Object, Object)</code></a> method should be used in all cases to ensure more than
             String principals and credentials can be used.  Shiro no longer calls this method - it will be
             removed before the 2.0 release.</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/shiro/realm/ldap/DefaultLdapContextFactory.html#getLdapContext-java.lang.String-java.lang.String-">org.apache.shiro.realm.ldap.DefaultLdapContextFactory.getLdapContext(String, String)</a>
<div class="block"><span class="deprecationComment">the <a href="org/apache/shiro/realm/ldap/DefaultLdapContextFactory.html#getLdapContext-java.lang.Object-java.lang.Object-"><code>DefaultLdapContextFactory.getLdapContext(Object, Object)</code></a> method should be used in all cases to ensure more than
             String principals and credentials can be used.  Shiro no longer calls this method - it will be
             removed before the 2.0 release.</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/authc/credential/HashedCredentialsMatcher.html#getSalt-org.apache.shiro.authc.AuthenticationToken-">org.apache.shiro.authc.credential.HashedCredentialsMatcher.getSalt(AuthenticationToken)</a>
<div class="block"><span class="deprecationComment">since Shiro 1.1.  Hash salting is now expected to be based on if the <a href="org/apache/shiro/authc/AuthenticationInfo.html" title="interface in org.apache.shiro.authc"><code>AuthenticationInfo</code></a>
             returned from the <code>Realm</code> is a <a href="org/apache/shiro/authc/SaltedAuthenticationInfo.html" title="interface in org.apache.shiro.authc"><code>SaltedAuthenticationInfo</code></a> instance and its
             <a href="org/apache/shiro/authc/SaltedAuthenticationInfo.html#getCredentialsSalt--"><code>getCredentialsSalt()</code></a> method returns a non-null value.
             This method and the 1.0 behavior still exists for backwards compatibility if the <code>Realm</code> does not return
             <code>SaltedAuthenticationInfo</code> instances, but <b>it is highly recommended that <code>Realm</code> implementations
             that support hashed credentials start returning <a href="org/apache/shiro/authc/SaltedAuthenticationInfo.html" title="interface in org.apache.shiro.authc"><code>SaltedAuthenticationInfo</code></a>
             instances as soon as possible</b>.<p/>
             This is because salts should always be obtained from the stored account information and
             never be interpreted based on user/Subject-entered data.  User-entered data is easier to compromise for
             attackers, whereas account-unique (and secure randomly-generated) salts never disseminated to the end-user
             are almost impossible to break.  This method will be removed in Shiro 2.0.</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/shiro/web/mgt/DefaultWebSecurityManager.html#getSessionMode--">org.apache.shiro.web.mgt.DefaultWebSecurityManager.getSessionMode()</a></td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/util/CollectionUtils.html#isEmpty-org.apache.shiro.subject.PrincipalCollection-">org.apache.shiro.util.CollectionUtils.isEmpty(PrincipalCollection)</a>
<div class="block"><span class="deprecationComment">Use PrincipalCollection.isEmpty() directly.</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/shiro/authc/credential/HashedCredentialsMatcher.html#isHashSalted--">org.apache.shiro.authc.credential.HashedCredentialsMatcher.isHashSalted()</a>
<div class="block"><span class="deprecationComment">since Shiro 1.1.  Hash salting is now expected to be based on if the <a href="org/apache/shiro/authc/AuthenticationInfo.html" title="interface in org.apache.shiro.authc"><code>AuthenticationInfo</code></a>
             returned from the <code>Realm</code> is a <a href="org/apache/shiro/authc/SaltedAuthenticationInfo.html" title="interface in org.apache.shiro.authc"><code>SaltedAuthenticationInfo</code></a> instance and its
             <a href="org/apache/shiro/authc/SaltedAuthenticationInfo.html#getCredentialsSalt--"><code>getCredentialsSalt()</code></a> method returns a non-null value.
             This method and the 1.0 behavior still exists for backwards compatibility if the <code>Realm</code> does not return
             <code>SaltedAuthenticationInfo</code> instances, but <b>it is highly recommended that <code>Realm</code> implementations
             that support hashed credentials start returning <a href="org/apache/shiro/authc/SaltedAuthenticationInfo.html" title="interface in org.apache.shiro.authc"><code>SaltedAuthenticationInfo</code></a>
             instances as soon as possible</b>.
             <p/>
             This is because salts should always be obtained from the stored account information and
             never be interpreted based on user/Subject-entered data.  User-entered data is easier to compromise for
             attackers, whereas account-unique (and secure randomly-generated) salts never disseminated to the end-user
             are almost impossible to break.  This method will be removed in Shiro 2.0.</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/mgt/DefaultSubjectFactory.html#newSubjectInstance-org.apache.shiro.subject.PrincipalCollection-boolean-java.lang.String-org.apache.shiro.session.Session-org.apache.shiro.mgt.SecurityManager-">org.apache.shiro.mgt.DefaultSubjectFactory.newSubjectInstance(PrincipalCollection, boolean, String, Session, SecurityManager)</a>
<div class="block"><span class="deprecationComment">since 1.2 - override <a href="org/apache/shiro/mgt/DefaultSubjectFactory.html#createSubject-org.apache.shiro.subject.SubjectContext-"><code>DefaultSubjectFactory.createSubject(org.apache.shiro.subject.SubjectContext)</code></a> directly if you
             need to instantiate a custom <a href="org/apache/shiro/subject/Subject.html" title="interface in org.apache.shiro.subject"><code>Subject</code></a> class.</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/shiro/web/mgt/DefaultWebSubjectFactory.html#newSubjectInstance-org.apache.shiro.subject.PrincipalCollection-boolean-java.lang.String-org.apache.shiro.session.Session-javax.servlet.ServletRequest-javax.servlet.ServletResponse-org.apache.shiro.mgt.SecurityManager-">org.apache.shiro.web.mgt.DefaultWebSubjectFactory.newSubjectInstance(PrincipalCollection, boolean, String, Session, ServletRequest, ServletResponse, SecurityManager)</a>
<div class="block"><span class="deprecationComment">since 1.2 - override <a href="org/apache/shiro/web/mgt/DefaultWebSubjectFactory.html#createSubject-org.apache.shiro.subject.SubjectContext-"><code>DefaultWebSubjectFactory.createSubject(org.apache.shiro.subject.SubjectContext)</code></a> directly if you
             need to instantiate a custom <a href="org/apache/shiro/subject/Subject.html" title="interface in org.apache.shiro.subject"><code>Subject</code></a> class.</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/authc/credential/HashedCredentialsMatcher.html#setHashSalted-boolean-">org.apache.shiro.authc.credential.HashedCredentialsMatcher.setHashSalted(boolean)</a>
<div class="block"><span class="deprecationComment">since Shiro 1.1.  Hash salting is now expected to be based on if the <a href="org/apache/shiro/authc/AuthenticationInfo.html" title="interface in org.apache.shiro.authc"><code>AuthenticationInfo</code></a>
             returned from the <code>Realm</code> is a <a href="org/apache/shiro/authc/SaltedAuthenticationInfo.html" title="interface in org.apache.shiro.authc"><code>SaltedAuthenticationInfo</code></a> instance and its
             <a href="org/apache/shiro/authc/SaltedAuthenticationInfo.html#getCredentialsSalt--"><code>getCredentialsSalt()</code></a> method returns a non-null value.
             This method and the 1.0 behavior still exists for backwards compatibility if the <code>Realm</code> does not return
             <code>SaltedAuthenticationInfo</code> instances, but <b>it is highly recommended that <code>Realm</code> implementations
             that support hashed credentials start returning <a href="org/apache/shiro/authc/SaltedAuthenticationInfo.html" title="interface in org.apache.shiro.authc"><code>SaltedAuthenticationInfo</code></a>
             instances as soon as possible</b>.
             <p/>
             This is because salts should always be obtained from the stored account information and
             never be interpreted based on user/Subject-entered data.  User-entered data is easier to compromise for
             attackers, whereas account-unique (and secure randomly-generated) salts never disseminated to the end-user
             are almost impossible to break.  This method will be removed in Shiro 2.0.</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/shiro/realm/ldap/DefaultLdapContextFactory.html#setSearchBase-java.lang.String-">org.apache.shiro.realm.ldap.DefaultLdapContextFactory.setSearchBase(String)</a>
<div class="block"><span class="deprecationComment">this attribute existed, but was never used in Shiro 1.x.  It will be removed prior to Shiro 2.0.</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/web/mgt/DefaultWebSecurityManager.html#setSessionMode-java.lang.String-">org.apache.shiro.web.mgt.DefaultWebSecurityManager.setSessionMode(String)</a>
<div class="block"><span class="deprecationComment">since 1.2</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/shiro/web/servlet/OncePerRequestFilter.html#shouldNotFilter-javax.servlet.ServletRequest-">org.apache.shiro.web.servlet.OncePerRequestFilter.shouldNotFilter(ServletRequest)</a>
<div class="block"><span class="deprecationComment">in favor of overriding <a href="org/apache/shiro/web/servlet/OncePerRequestFilter.html#isEnabled-javax.servlet.ServletRequest-javax.servlet.ServletResponse-"><code>OncePerRequestFilter.isEnabled(javax.servlet.ServletRequest, javax.servlet.ServletResponse)</code></a>
 for custom behavior.  This method will be removed in Shiro 2.0.</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/mgt/DefaultSecurityManager.html#unbind-org.apache.shiro.subject.Subject-">org.apache.shiro.mgt.DefaultSecurityManager.unbind(Subject)</a>
<div class="block"><span class="deprecationComment">in Shiro 1.2 in favor of <a href="org/apache/shiro/mgt/DefaultSecurityManager.html#delete-org.apache.shiro.subject.Subject-"><code>DefaultSecurityManager.delete(org.apache.shiro.subject.Subject)</code></a></span></div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="constructor">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table class="deprecatedSummary" border="0" cellpadding="3" cellspacing="0" summary="Deprecated Constructors table, listing deprecated constructors, and an explanation">
<caption><span>Deprecated Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="org/apache/shiro/UnavailableSecurityManagerException.html#UnavailableSecurityManagerException-java.lang.String-java.lang.Throwable-">org.apache.shiro.UnavailableSecurityManagerException(String, Throwable)</a>
<div class="block"><span class="deprecationComment">This constructor is NOT used by Shiro directly, and will be removed in the future.</span></div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="overview-summary.html">Overview</a></li>
<li>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="overview-tree.html">Tree</a></li>
<li class="navBarCell1Rev">Deprecated</li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?deprecated-list.html" target="_top">Frames</a></li>
<li><a href="deprecated-list.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2004&#x2013;2016 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>
