ShiroConfig.java 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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/getHospArea/**","anon");
  43. filterMap.put("/costAccount/excel/getImportUserTemplate","anon");
  44. filterMap.put("/costAccount/login", "anon");
  45. filterMap.put("/**/*.jpg", "anon");
  46. filterMap.put("/**/*.png", "anon");
  47. // 除了以上的,其他的都使用oauth2过滤器
  48. filterMap.put("/**", "oauth2");
  49. filterFactoryBean.setFilterChainDefinitionMap(filterMap);
  50. return filterFactoryBean;
  51. }
  52. @Bean("lifecycleBeanPostProcessor")
  53. public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
  54. return new LifecycleBeanPostProcessor();
  55. }
  56. /**
  57. * AOP 使用 的通知点增强点
  58. * @param securityManager
  59. * @return
  60. */
  61. @Bean
  62. public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
  63. AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
  64. advisor.setSecurityManager(securityManager);
  65. return advisor;
  66. }
  67. }