SpringBoot整合Shiro时出错

错误:

2018-10-31 15:49:38.697 ERROR --- [restartedMain] o.s.b.d.LoggingFailureAnalysisReporter: 

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of method authorizationAttributeSourceAdvisor in com.csair.etm.manage.configuration.ShiroConfiguration required a bean named 'authenticator' that could not be found.


Action:

Consider defining a bean named 'authenticator' in your configuration.
<!--之前用的依赖-->
<!--Shiro-->
<dependency>
     <groupId>org.apache.shiro</groupId>
     <artifactId>shiro-spring</artifactId>
     <version>1.4.0</version>
 </dependency>
 <!--上面这样没报错,换成下面的依赖就报错了-->
 <!--shiro-->
 <dependency>
     <groupId>org.apache.shiro</groupId>
     <artifactId>shiro-spring-boot-web-starter</artifactId>
     <version>1.4.0</version>
 </dependency>

原因:

在starter的org.apache.shiro.spring.config.web.autoconfigure类已经定义了securityManager,代码如下:

   @Bean
   @ConditionalOnMissingBean
   protected SessionsSecurityManager securityManager(List<Realm> realms) {
       return super.securityManager(realms);
   }

所以把注入的securityManager类型换成SessionSecurityManager就可以了

更多推荐

Consider defining a bean named 'authenticator' in your configuration.