概述
protected AuthenticationInfo doMultiRealmAuthentication(Collection<Realm> realms, AuthenticationToken token) {
AuthenticationStrategy strategy = this.getAuthenticationStrategy();
AuthenticationInfo aggregate = strategy.beforeAllAttempts(realms, token);
if (log.isTraceEnabled()) {
log.trace("Iterating through {} realms for PAM authentication", realms.size());
}
Iterator var5 = realms.iterator();
while(var5.hasNext()) {
Realm realm = (Realm)var5.next();
aggregate = strategy.beforeAttempt(realm, token, aggregate);
if (realm.supports(token)) {
log.trace("Attempting to authenticate token [{}] using realm [{}]", token, realm);
AuthenticationInfo info = null;
Throwable t = null;
try {
info = realm.getAuthenticationInfo(token);
} catch (Throwable var11) {
t = var11;
if (log.isDebugEnabled()) {
String msg = "Realm [" + realm + "] threw an exception during a multi-realm authentication attempt:";
log.debug(msg, var11);
}
}
aggregate = strategy.afterAttempt(realm, token, info, aggregate, t);
} else {
log.debug("Realm [{}] does not support token {}.
Skipping realm.", realm, token);
}
}
aggregate = strategy.afterAllAttempts(token, aggregate);
return aggregate;
}
shiro 多realm 认证的时候执行的源码
通过迭代器遍历 遍历的时候会首先判断 supports token 默认是false
本身作用应该是来判断token 类型 然后区分验证是否执行 一般的 instance of 区分来判判断是否执行验证操作也可以实现针对 性验证
Realm 中重写supports 方法
@Override
public boolean supports(AuthenticationToken token) {
return token instanceof JWTToken;
}
来决定是否继续执行下去他执行
验证成功!喜大普奔
最后
以上就是妩媚棉花糖为你收集整理的shiro 多Realm配置 Realm不执行/实现Realm针对性验证的全部内容,希望文章能够帮你解决shiro 多Realm配置 Realm不执行/实现Realm针对性验证所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复