obeckham 发表于 2017-12-20 19:32:34

Spring Boot + Redis 实现Shiro集群

import java.util.HashMap;  

import java.util.Map;  

  

import javax.annotation.Resource;  

  

import org.apache.shiro.session.mgt.SessionManager;  

import org.apache.shiro.spring.LifecycleBeanPostProcessor;  

import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;  

import org.apache.shiro.spring.web.ShiroFilterFactoryBean;  

import org.apache.shiro.web.mgt.DefaultWebSecurityManager;  

import org.apache.shiro.web.session.mgt.DefaultWebSessionManager;  

import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;  

import org.springframework.context.annotation.Bean;  

import org.springframework.context.annotation.Configuration;  

  

/**  *
  *
@author April.Chen*/  
//@Configuration

  
public>  

  @Resource
  private RedisSessionDAO sessionDAO;
  

  @Bean
  public UserRealm getUserRealm() {
  return new UserRealm();
  }
  

  @Bean
  public LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() {
  return new LifecycleBeanPostProcessor();
  }
  

  @Bean
  public RedisCacheManager redisCacheManager() {
  return new RedisCacheManager();
  }
  

  @Bean
  public SessionManager sessionManager() {
  DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
  sessionManager.setSessionDAO(sessionDAO);
  sessionManager.setGlobalSessionTimeout(1800);
  sessionManager.setCacheManager(redisCacheManager());
  return sessionManager;
  }
  

  @Bean
  public DefaultWebSecurityManager securityManager() {
  DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
  securityManager.setSessionManager(sessionManager());
  securityManager.setCacheManager(redisCacheManager());
  return securityManager;
  }
  

  @Bean
  public AuthorizationAttributeSourceAdvisor getAuthorizationAttributeSourceAdvisor() {
  AuthorizationAttributeSourceAdvisor aasa = new AuthorizationAttributeSourceAdvisor();
  aasa.setSecurityManager(securityManager());
  return new AuthorizationAttributeSourceAdvisor();
  }
  

  @Bean
  public DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator() {
  DefaultAdvisorAutoProxyCreator daap = new DefaultAdvisorAutoProxyCreator();
  daap.setProxyTargetClass(true);
  return daap;
  }
  

  @Bean
  public ShiroFilterFactoryBean getShiroFilterFactoryBean() {
  Map<String, String> filterChainDefinitionMap = new HashMap<>();
  ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
  shiroFilterFactoryBean.setSecurityManager(securityManager());
  shiroFilterFactoryBean.setLoginUrl("/login");
  shiroFilterFactoryBean.setSuccessUrl("/index");
  filterChainDefinitionMap.put("/sa/**", "authc");
  filterChainDefinitionMap.put("/**", "anon");
  shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
  return shiroFilterFactoryBean;
  }
  
}
页: [1]
查看完整版本: Spring Boot + Redis 实现Shiro集群