package com.landtool.lanbase.config; import org.apache.shiro.mgt.SecurityManager; 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.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.landtool.lanbase.common.shiro.ShiroAuthenticatingFilter; import com.landtool.lanbase.common.shiro.ShiroRealm; import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; import javax.servlet.Filter; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; /** * @author lanbase * @Description: TODO(Shiro配置) * @date 2017-6-23 15:07 */ @Configuration public class ShiroConfig { @Value("${sys.loginUrl}") private String loginUrl;// http://127.0.0.1:8082/login @Value("${sys.casHost}") private String casHost;// https://cas.nmsmp.com/cas/ @Bean("sessionManager") public SessionManager sessionManager(){ DefaultWebSessionManager sessionManager = new DefaultWebSessionManager(); sessionManager.setSessionValidationSchedulerEnabled(true); sessionManager.setSessionIdUrlRewritingEnabled(true); sessionManager.setSessionIdCookieEnabled(true); sessionManager.setGlobalSessionTimeout(1800000L); return sessionManager; } @Bean("securityManager") public SecurityManager securityManager(ShiroRealm shiroRealm, SessionManager sessionManager) { DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); securityManager.setRealm(shiroRealm); securityManager.setSessionManager(sessionManager); return securityManager; } @Bean("shiroFilter") public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) { ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean(); shiroFilter.setSecurityManager(securityManager); //过滤 Map filters = new HashMap<>(); filters.put("shiro", new ShiroAuthenticatingFilter(loginUrl,casHost)); shiroFilter.setFilters(filters); Map filterMap = new LinkedHashMap<>(); //filterMap.put("/geoplat/**", "anon"); //api filterMap.put("/api/**", "anon"); //swagger filterMap.put("/swagger-resources/**", "anon"); filterMap.put("/v2/**", "anon"); filterMap.put("/webjars/**", "anon"); //index //filterMap.put("/", "anon"); filterMap.put("/index", "anon"); filterMap.put("/sys/error", "anon"); //login filterMap.put("/login", "anon"); filterMap.put("/logout", "anon"); filterMap.put("/captcha.jpg", "anon"); //static filterMap.put("/**/*.css", "anon"); filterMap.put("/**/*.js", "anon"); filterMap.put("/**/*.html", "anon"); filterMap.put("/fonts/**", "anon"); filterMap.put("/image/**", "anon"); filterMap.put("/plugins/**", "anon"); filterMap.put("/favicon.ico", "anon"); //other filterMap.put("/**/druid/**", "anon"); filterMap.put("/ZiYuanIcon/**", "anon"); filterMap.put("/uploadPath/**", "anon");//上传文件映射的地址 //shiro //filterMap.put("/**", "authc"); filterMap.put("/**", "shiro"); //String url = "https://www.lt.com:8443/cas/login?service=http://127.0.0.1:8082/login"; //String url = loginUrl; //shiroFilter.setLoginUrl(url); // 登录成功后要跳转的链接 shiroFilter.setSuccessUrl("/index"); shiroFilter.setFilterChainDefinitionMap(filterMap); return shiroFilter; } @Bean("lifecycleBeanPostProcessor") public static LifecycleBeanPostProcessor lifecycleBeanPostProcessor() { return new LifecycleBeanPostProcessor(); } @Bean public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() { DefaultAdvisorAutoProxyCreator proxyCreator = new DefaultAdvisorAutoProxyCreator(); proxyCreator.setProxyTargetClass(true); return proxyCreator; } @Bean public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) { AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor(); advisor.setSecurityManager(securityManager); return advisor; } }