123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package com.imed.costaccount.common.shiro;
- import org.apache.shiro.mgt.SecurityManager;
- 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.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import javax.servlet.Filter;
- import java.util.HashMap;
- import java.util.LinkedHashMap;
- import java.util.Map;
- @Configuration
- public class ShiroConfig {
- @Bean("securityManager")
- public SecurityManager securityManager(OAuth2Realm realm) {
- DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager();
- defaultWebSecurityManager.setRealm(realm);
- defaultWebSecurityManager.setRememberMeManager(null);
- return defaultWebSecurityManager;
- }
- @Bean("shiroFilter")
- public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager,OAuth2Filter filter) {
- ShiroFilterFactoryBean filterFactoryBean = new ShiroFilterFactoryBean();
- filterFactoryBean.setSecurityManager(securityManager);
- // OAuth2过滤
- Map<String, Filter> filters = new HashMap<>();
- filters.put("oauth2", filter);
- filterFactoryBean.setFilters(filters);
- // HTTP请求过滤
- Map<String, String> filterMap = new LinkedHashMap<>();
- filterMap.put("/webjars/**", "anon");
- filterMap.put("/druid/**", "anon");
- filterMap.put("/app/**", "anon");
- filterMap.put("/swagger/**", "anon");
- filterMap.put("/v2/api-docs", "anon");
- filterMap.put("/swagger-ui.html", "anon");
- filterMap.put("/static/js/**", "anon");
- filterMap.put("/doc.html", "anon");
- filterMap.put("/swagger-resources/**", "anon");
- filterMap.put("/captcha.jpg", "anon");
- filterMap.put("/costAccount/user/**","anon");
- filterMap.put("/costAccount/getHospArea/**","anon");
- filterMap.put("/costAccount/excel/**","anon");
- filterMap.put("/costAccount/hosptail/**","anon");
- filterMap.put("/costAccount/login", "anon");
- filterMap.put("/**/*.jpg", "anon");
- filterMap.put("/**/*.png", "anon");
- // 除了以上的,其他的都使用oauth2过滤器
- filterMap.put("/**", "oauth2");
- filterFactoryBean.setFilterChainDefinitionMap(filterMap);
- return filterFactoryBean;
- }
- @Bean("lifecycleBeanPostProcessor")
- public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
- return new LifecycleBeanPostProcessor();
- }
- /**
- * AOP 使用 的通知点增强点
- * @param securityManager
- * @return
- */
- @Bean
- public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
- AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
- advisor.setSecurityManager(securityManager);
- return advisor;
- }
- }
|