Shrio 多realms集成:No realms have been configured! One or more realms must be present

我用springboot在代码中集成多realms的时候一直遇到这个异常。

代码如下:

    @Bean
    public SecurityManager securityManager(){
        DefaultWebSecurityManager securityManager=new DefaultWebSecurityManager();
        //设置realm.
        List 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 realms=new ArrayList<>();
        realms.add(myShiroRealm());
        realms.add(myShiroRealm2());
        securityManager.setRealms(realms);

        return securityManager;
    }

很狗血的问题。

猜测可能是要先设置多realm管理器modularRealmAuthenticator,然后在设置realm,才能把realm设置进modularRealmAuthenticator。如果设置的晚了,可能就无法加载realm了。

你可能感兴趣的:(Shiro)