ShiroConfig.java 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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("/demo/**", "anon");
  40. filterMap.put("/doc.html", "anon");
  41. filterMap.put("/**/*.xlsx", "anon");
  42. filterMap.put("/**/*.xls", "anon");
  43. filterMap.put("/swagger-resources/**", "anon");
  44. filterMap.put("/captcha.jpg", "anon");
  45. filterMap.put("/costAccount/getHospArea/**", "anon");
  46. filterMap.put("/costAccount/excel/getImportUserTemplate", "anon");
  47. filterMap.put("/costAccount/excel/getcurrentTemplate","anon");
  48. filterMap.put("/costAccount/excel/getDepartmentTemplate", "anon");
  49. filterMap.put("/costAccount/excel/getImportProductTemplate", "anon");
  50. filterMap.put("/costAccount/login", "anon");
  51. filterMap.put("/swagger.json","anon");
  52. filterMap.put("/swagger-ui.html","anon");
  53. filterMap.put("/v2/api-docs/*","anon");
  54. filterMap.put("/**/*.jpg", "anon");
  55. filterMap.put("/**/*.png", "anon");
  56. // 除了以上的,其他的都使用oauth2过滤器
  57. filterMap.put("/**", "oauth2");
  58. filterFactoryBean.setFilterChainDefinitionMap(filterMap);
  59. return filterFactoryBean;
  60. }
  61. @Bean("lifecycleBeanPostProcessor")
  62. public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
  63. return new LifecycleBeanPostProcessor();
  64. }
  65. /**
  66. * AOP 使用 的通知点增强点
  67. *
  68. * @param securityManager
  69. * @return
  70. */
  71. @Bean
  72. public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
  73. AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
  74. advisor.setSecurityManager(securityManager);
  75. return advisor;
  76. }
  77. }