ShiroConfig.java 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package com.imed.costaccount.common.shiro;
  2. import org.apache.shiro.mgt.SecurityManager;
  3. import org.apache.shiro.spring.LifecycleBeanPostProcessor;
  4. import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
  5. import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
  6. import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
  7. import org.springframework.context.annotation.Bean;
  8. import org.springframework.context.annotation.Configuration;
  9. import javax.servlet.Filter;
  10. import java.util.HashMap;
  11. import java.util.LinkedHashMap;
  12. import java.util.Map;
  13. @Configuration
  14. public class ShiroConfig {
  15. @Bean("securityManager")
  16. public SecurityManager securityManager(OAuth2Realm realm) {
  17. DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager();
  18. defaultWebSecurityManager.setRealm(realm);
  19. defaultWebSecurityManager.setRememberMeManager(null);
  20. return defaultWebSecurityManager;
  21. }
  22. @Bean("shiroFilter")
  23. public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager,OAuth2Filter filter) {
  24. ShiroFilterFactoryBean filterFactoryBean = new ShiroFilterFactoryBean();
  25. filterFactoryBean.setSecurityManager(securityManager);
  26. // OAuth2过滤
  27. Map<String, Filter> filters = new HashMap<>();
  28. filters.put("oauth2", filter);
  29. filterFactoryBean.setFilters(filters);
  30. // HTTP请求过滤
  31. Map<String, String> filterMap = new LinkedHashMap<>();
  32. filterMap.put("/webjars/**", "anon");
  33. filterMap.put("/druid/**", "anon");
  34. filterMap.put("/app/**", "anon");
  35. filterMap.put("/swagger/**", "anon");
  36. filterMap.put("/v2/api-docs", "anon");
  37. filterMap.put("/swagger-ui.html", "anon");
  38. filterMap.put("/static/js/**", "anon");
  39. filterMap.put("/doc.html", "anon");
  40. filterMap.put("/swagger-resources/**", "anon");
  41. filterMap.put("/captcha.jpg", "anon");
  42. filterMap.put("/costAccount/user/**","anon");
  43. filterMap.put("/costAccount/getHospArea/**","anon");
  44. filterMap.put("/costAccount/excel/**","anon");
  45. filterMap.put("/costAccount/hosptail/**","anon");
  46. filterMap.put("/costAccount/login", "anon");
  47. filterMap.put("/**/*.jpg", "anon");
  48. filterMap.put("/**/*.png", "anon");
  49. // 除了以上的,其他的都使用oauth2过滤器
  50. filterMap.put("/**", "oauth2");
  51. filterFactoryBean.setFilterChainDefinitionMap(filterMap);
  52. return filterFactoryBean;
  53. }
  54. @Bean("lifecycleBeanPostProcessor")
  55. public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
  56. return new LifecycleBeanPostProcessor();
  57. }
  58. /**
  59. * AOP 使用 的通知点增强点
  60. * @param securityManager
  61. * @return
  62. */
  63. @Bean
  64. public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
  65. AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
  66. advisor.setSecurityManager(securityManager);
  67. return advisor;
  68. }
  69. }