|
|
|
@ -12,15 +12,29 @@ import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreato
|
|
|
|
|
import org.springframework.context.annotation.Bean;
|
|
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Shiro 配置类
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
@Configuration
|
|
|
|
|
public class ShiroConfiguration {
|
|
|
|
|
|
|
|
|
|
// 定义过滤链定义映射
|
|
|
|
|
private static Map<String, String> filterChainDefinitionMap = new LinkedHashMap<String, String>();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取 Shiro 领域对象
|
|
|
|
|
* @return MemberRealm 对象
|
|
|
|
|
*/
|
|
|
|
|
@Bean(name = "shiroRealm")
|
|
|
|
|
public MemberRealm getShiroRealm() {
|
|
|
|
|
return new MemberRealm();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取 EhCache 管理器
|
|
|
|
|
* @return EhCacheManager 对象
|
|
|
|
|
*/
|
|
|
|
|
@Bean(name = "shiroEhcacheManager")
|
|
|
|
|
public EhCacheManager getEhCacheManager() {
|
|
|
|
|
EhCacheManager em = new EhCacheManager();
|
|
|
|
@ -28,11 +42,19 @@ public class ShiroConfiguration {
|
|
|
|
|
return em;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取生命周期 Bean 后处理器
|
|
|
|
|
* @return LifecycleBeanPostProcessor 对象
|
|
|
|
|
*/
|
|
|
|
|
@Bean(name = "lifecycleBeanPostProcessor")
|
|
|
|
|
public LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() {
|
|
|
|
|
return new LifecycleBeanPostProcessor();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取默认顾问自动代理创建器
|
|
|
|
|
* @return DefaultAdvisorAutoProxyCreator 对象
|
|
|
|
|
*/
|
|
|
|
|
@Bean
|
|
|
|
|
public DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator() {
|
|
|
|
|
DefaultAdvisorAutoProxyCreator daap = new DefaultAdvisorAutoProxyCreator();
|
|
|
|
@ -40,6 +62,10 @@ public class ShiroConfiguration {
|
|
|
|
|
return daap;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取默认 Web 安全管理器
|
|
|
|
|
* @return DefaultWebSecurityManager 对象
|
|
|
|
|
*/
|
|
|
|
|
@Bean(name = "securityManager")
|
|
|
|
|
public DefaultWebSecurityManager getDefaultWebSecurityManager() {
|
|
|
|
|
DefaultWebSecurityManager dwsm = new DefaultWebSecurityManager();
|
|
|
|
@ -48,19 +74,28 @@ public class ShiroConfiguration {
|
|
|
|
|
return dwsm;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取授权属性源顾问
|
|
|
|
|
* @return AuthorizationAttributeSourceAdvisor 对象
|
|
|
|
|
*/
|
|
|
|
|
@Bean
|
|
|
|
|
public AuthorizationAttributeSourceAdvisor getAuthorizationAttributeSourceAdvisor() {
|
|
|
|
|
AuthorizationAttributeSourceAdvisor aasa = new AuthorizationAttributeSourceAdvisor();
|
|
|
|
|
aasa.setSecurityManager(getDefaultWebSecurityManager());
|
|
|
|
|
return new AuthorizationAttributeSourceAdvisor();
|
|
|
|
|
return aasa;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取 Shiro 过滤器工厂 Bean
|
|
|
|
|
* @return ShiroFilterFactoryBean 对象
|
|
|
|
|
*/
|
|
|
|
|
@Bean(name = "shiroFilter")
|
|
|
|
|
public ShiroFilterFactoryBean getShiroFilterFactoryBean() {
|
|
|
|
|
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
|
|
|
|
|
shiroFilterFactoryBean.setSecurityManager(getDefaultWebSecurityManager());
|
|
|
|
|
shiroFilterFactoryBean.setLoginUrl("/login");
|
|
|
|
|
shiroFilterFactoryBean.setSuccessUrl("/index");
|
|
|
|
|
// 设置过滤链定义
|
|
|
|
|
filterChainDefinitionMap.put("/member/**", "authc");
|
|
|
|
|
filterChainDefinitionMap.put("/**", "anon");
|
|
|
|
|
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
|
|
|
|
|