我是靠谱客的博主 妩媚棉花糖,最近开发中收集的这篇文章主要介绍shiro 多Realm配置 Realm不执行/实现Realm针对性验证,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 


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针对性验证所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部