我用springboot在代码中集成多realms的时候一直遇到这个异常。
代码如下:
@Bean
public SecurityManager securityManager(){
DefaultWebSecurityManager securityManager=new DefaultWebSecurityManager();
//设置realm.
List<Realm> realms=new ArrayList<>();
realms.add(myShiroRealm());
realms.add(myShiroRealm2());
securityManager.setRealms(realms);
securityManager.setAuthenticator(modularRealmAuthenticator());
return securityManager;
}
这里有提供realms的set方法,所以肯定是支持多realms的。
后来把modularRealmAuthenticator这块代码放到了前面就好了。
@Bean
public SecurityManager securityManager(){
DefaultWebSecurityManager securityManager=new DefaultWebSecurityManager();
//设置realm.
securityManager.setAuthenticator(modularRealmAuthenticator());
List<Realm> realms=new ArrayList<>();
realms.add(myShiroRealm());
realms.add(myShiroRealm2());
securityManager.setRealms(realms);
return securityManager;
}
很狗血的问题。
猜测可能是要先设置多realm管理器modularRealmAuthenticator,然后在设置realm,才能把realm设置进modularRealmAuthenticator。如果设置的晚了,可能就无法加载realm了。