Example usage for org.apache.shiro.web.servlet AbstractShiroFilter setFilterChainResolver

List of usage examples for org.apache.shiro.web.servlet AbstractShiroFilter setFilterChainResolver

Introduction

In this page you can find the example usage for org.apache.shiro.web.servlet AbstractShiroFilter setFilterChainResolver.

Prototype

public void setFilterChainResolver(FilterChainResolver filterChainResolver) 

Source Link

Usage

From source file:com.stormpath.shiro.spring.boot.autoconfigure.StormpathShiroWebAutoConfiguration.java

License:Apache License

@Bean
public ShiroPrioritizedFilterChainResolver shiroPrioritizedFilterChainResolver(
        @Qualifier("filterShiroFilterRegistrationBean") FilterRegistrationBean filterShiroFilterRegistrationBean,
        @Qualifier("stormpathFilter") FilterRegistrationBean stormpathFilter) {

    if (!(filterShiroFilterRegistrationBean.getFilter() instanceof AbstractShiroFilter)) {
        throw new ConfigurationException(
                "Shiro filter registration bean did not contain a AbstractShiroFitler");
    }/*from ww w .  j  a v  a2 s  . co  m*/

    AbstractShiroFilter filter = (AbstractShiroFilter) filterShiroFilterRegistrationBean.getFilter();

    FilterChainResolver originalFilterChainResolver = filter.getFilterChainResolver();

    List<Filter> prioritizedFilters = new ArrayList<>();
    prioritizedFilters.add(stormpathFilter.getFilter());
    stormpathFilter.setEnabled(false);
    prioritizedFilters.add(new StormpathShiroPassiveLoginFilter());
    ShiroPrioritizedFilterChainResolver prioritizedFilterChainResolver = new ShiroPrioritizedFilterChainResolver(
            originalFilterChainResolver, prioritizedFilters);

    filter.setFilterChainResolver(prioritizedFilterChainResolver);

    return prioritizedFilterChainResolver;
}