| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- package com.izouma.awesomeadmin.shiro;
- import org.apache.log4j.Logger;
- import org.apache.shiro.authc.AuthenticationInfo;
- import org.apache.shiro.authc.AuthenticationToken;
- import org.apache.shiro.authc.pam.AuthenticationStrategy;
- import org.apache.shiro.authc.pam.ModularRealmAuthenticator;
- import org.apache.shiro.realm.Realm;
- import java.util.Collection;
- import java.util.Iterator;
- public class MyModularRealmAuthenticator extends ModularRealmAuthenticator {
- protected static Logger logger = Logger.getLogger(MyModularRealmAuthenticator.class);
- protected AuthenticationInfo doMultiRealmAuthentication(Collection<Realm> realms, AuthenticationToken token) {
- AuthenticationStrategy strategy = this.getAuthenticationStrategy();
- AuthenticationInfo aggregate = strategy.beforeAllAttempts(realms, token);
- Iterator var5 = realms.iterator();
- while (var5.hasNext()) {
- Realm realm = (Realm) var5.next();
- aggregate = strategy.beforeAttempt(realm, token, aggregate);
- if (realm.supports(token)) {
- logger.trace("Attempting to authenticate token [{}] using realm [{}]");
- AuthenticationInfo info = null;
- Throwable t = null;
- info = realm.getAuthenticationInfo(token);
- aggregate = strategy.afterAttempt(realm, token, info, aggregate, t);
- } else {
- logger.debug("Realm [{}] does not support token {}. Skipping realm.");
- }
- }
- aggregate = strategy.afterAllAttempts(token, aggregate);
- return aggregate;
- }
- }
|