2
13693261870
2022-09-16 653761a31dfeb50dd3d007e892d69c90bf0cdafc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
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<String, Filter> filters = new HashMap<>();
        filters.put("shiro", new ShiroAuthenticatingFilter(loginUrl,casHost));
        shiroFilter.setFilters(filters);
 
        Map<String, String> 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;
    }
 
}