相关文章推荐
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

spring-boot run error: There is no filter with name 'userAuthorizationFilter' to apply to chain [/**] in the pool of available Filters. Ensure a filter with that name/path has first been registered with the addFilter method(s).

  <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-spring-boot-web-starter</artifactId>
        <version>1.4.0</version>
  </dependency>

shiroConfig.java:

@Configuration
public class ShiroConfig{
@Bean
public ShiroFilterChainDefinition shiroFilterChainDefinition() {
    DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition();
    chainDefinition.addPathDefinition("/css/**", DefaultFilter.anon.name());
    chainDefinition.addPathDefinition("/js/**", DefaultFilter.anon.name());
    chainDefinition.addPathDefinition("/images/**", DefaultFilter.anon.name());
    chainDefinition.addPathDefinition("/favicon.ico", DefaultFilter.anon.name());
    chainDefinition.addPathDefinition("/logout", DefaultFilter.logout.name());
    chainDefinition.addPathDefinition("/login", DefaultFilter.anon.name());
    chainDefinition.addPathDefinition("/**", "userAuthorizationFilter");
    return chainDefinition;
@Bean(name = "userAuthorizationFilter")
public UserAuthorizationFilter userAuthorizationFilter(){
    return new UserAuthorizationFilter();
@Bean
public UserRealm userRealm() {
    UserRealm userRealm = new UserRealm();
    return userRealm;
@Bean
public DefaultWebSecurityManager securityManager() {
    DefaultWebSecurityManager manager = new DefaultWebSecurityManager();
    manager.setRealm(userRealm());
    return manager;

[mvn spring-boot:run]Error Logs:

Caused by: java.lang.IllegalArgumentException: There is no filter with name 'userAuthorizationFilter' to apply to chain [/**] in the pool of available Filters.  Ensure a filter with that name/path has first been registered with the addFilter method(s).
at org.apache.shiro.web.filter.mgt.DefaultFilterChainManager.addToChain(DefaultFilterChainManager.java:265)
at org.apache.shiro.web.filter.mgt.DefaultFilterChainManager.createChain(DefaultFilterChainManager.java:148)
at org.apache.shiro.spring.web.ShiroFilterFactoryBean.createFilterChainManager(ShiroFilterFactoryBean.java:397)
at org.apache.shiro.spring.web.ShiroFilterFactoryBean.createInstance(ShiroFilterFactoryBean.java:437)
at org.apache.shiro.spring.web.ShiroFilterFactoryBean.getObject(ShiroFilterFactoryBean.java:343)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:168)
... 43 common frames omitted

Am I missing an essential part of the configuration?

Any help would be appreciated. Thanks.

It seems you did not assign an alias for your own filter "userAuthorizationFilter";

you should define the alias in the ShiroFilterFactoryBean initialization.

@Bean(name = "shiroFilter")
public ShiroFilterFactoryBean getShiroFilterFactoryBean(DefaultWebSecurityManager securityManager, UserAuthorizationFilter  authorizationFilter) {
    ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
    shiroFilterFactoryBean.setSecurityManager(securityManager);
    //...........................some other codes
    HashMap<String, Filter> map = new HashMap<>();
    map.put("userAuthorizationFilter",authorizationFilter);
    shiroFilterFactoryBean.setFilters(map);
    //...........................some other codes
    return shiroFilterFactoryBean;
        

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.