1、添加自定义认证过滤器类
创建一个类继承与AuthenticatingFilter
2、在Shrio配置中配置ShiroFilterFactoryBean,在配置ShiroFilterFactoryBean的时候设置setFilters为过滤器。
注意:添加的自定义过滤器一定不能注入成bean,不然可能会发生No SecurityManager accessible to the calling code, either bound to the org.apache.shiro.util.ThreadContext or as a vm static singleton. This is an invalid application configuration.
@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
shiroFilterFactoryBean.setSecurityManager(securityManager);
Map<String, Filter> filters = shiroFilterFactoryBean.getFilters();
//这个地方添加的过滤器不能作为bean
filters.put("oauth", new OAuth2Filter());
// shiroFilterFactoryBean.setFilters(filterMap);
LinkedHashMap<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
return shiroFilterFactoryBean;
}