本人在做shiro测试的时候,发现多个realms验证时,对于FirstSuccessfulStrategy验证,1.4.0版本有个bug,会返回最后一个认证成功的信息,并不是第一个验证成功的,跟踪源码,查看到1.4.0和1.4.1版本的不同,
1.4.0源码如下
if (aggregate != null && isEmpty(aggregate.getPrincipals())) { return aggregate; } return info != null ? info : aggregate;
1.4.1
if (aggregate != null && !isEmpty(aggregate.getPrincipals())) { return aggregate; } else { return info != null ? info : aggregate; }
尽管只是这一点不同,但是最后返回的结果截然不同,第一个会验证所有并覆盖之前的,只返回最后一个验证成功的信息,但是第二个才是真的验证了FirstSuccessfulStrategy,返回第一个验证成功的
第一次写,有点粗糙,希望大家鼓励