shiro 的配置类怎么写
时间: 2024-05-22 10:15:47 浏览: 12
Shiro的配置类可以通过继承org.apache.shiro.spring.config.ShiroAnnotationProcessorConfiguration类来实现。这个类提供了Shiro的注解处理器,可以将Shiro的注解自动注册到Spring容器中。
下面是一个简单的Shiro配置类的示例:
@Configuration
public class ShiroConfig {
@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(DefaultWebSecurityManager securityManager) {
ShiroFilterFactoryBean filterFactoryBean = new ShiroFilterFactoryBean();
filterFactoryBean.setSecurityManager(securityManager);
Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
filterChainDefinitionMap.put("/login", "anon");
filterChainDefinitionMap.put("/**", "authc");
filterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
return filterFactoryBean;
}
@Bean
public DefaultWebSecurityManager securityManager(Realm realm) {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setRealm(realm);
return securityManager;
}
@Bean
public Realm realm() {
return new MyRealm();
}
@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(DefaultWebSecurityManager securityManager) {
AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
advisor.setSecurityManager(securityManager);
return advisor;
}
@Bean
public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
DefaultAdvisorAutoProxyCreator creator = new DefaultAdvisorAutoProxyCreator();
creator.setProxyTargetClass(true);
return creator;
}
}
这个配置类中定义了ShiroFilterFactoryBean、DefaultWebSecurityManager、Realm、AuthorizationAttributeSourceAdvisor和DefaultAdvisorAutoProxyCreator这些bean,它们分别用于配置Shiro的过滤器、安全管理器、认证和授权的数据源、授权注解处理器和AOP代理创建器。
在这个示例中,ShiroFilterFactoryBean用于配置Shiro的过滤器链,将所有请求都需要认证通过才能访问;DefaultWebSecurityManager用于配置Shiro的安全管理器,将自定义的Realm注入;Realm用于配置认证和授权的数据源,这里使用了自定义的MyRealm;AuthorizationAttributeSourceAdvisor和DefaultAdvisorAutoProxyCreator用于配置Shiro的注解处理器和AOP代理创建器,将Shiro的授权注解自动注册到Spring容器中。
需要注意的是,如果使用了Shiro的注解处理器,还需要在Spring的配置类上添加@EnableAspectJAutoProxy注解,以开启AOP代理功能。