ShiroConfig.java 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /**
  2. * Copyright (c) 2016-2019 人人开源 All rights reserved.
  3. *
  4. * https://www.renren.io
  5. *
  6. * 版权所有,侵权必究!
  7. */
  8. package io.renren.config;
  9. import io.renren.modules.sys.oauth2.OAuth2Filter;
  10. import io.renren.modules.sys.oauth2.OAuth2Realm;
  11. import org.apache.shiro.mgt.SecurityManager;
  12. import org.apache.shiro.spring.LifecycleBeanPostProcessor;
  13. import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
  14. import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
  15. import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
  16. import org.springframework.context.annotation.Bean;
  17. import org.springframework.context.annotation.Configuration;
  18. import javax.servlet.Filter;
  19. import java.util.HashMap;
  20. import java.util.LinkedHashMap;
  21. import java.util.Map;
  22. /**
  23. * Shiro配置
  24. *
  25. * @author Mark sunlightcs@gmail.com
  26. */
  27. @Configuration
  28. public class ShiroConfig {
  29. @Bean("securityManager")
  30. public SecurityManager securityManager(OAuth2Realm oAuth2Realm) {
  31. DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
  32. securityManager.setRealm(oAuth2Realm);
  33. securityManager.setRememberMeManager(null);
  34. return securityManager;
  35. }
  36. @Bean("shiroFilter")
  37. public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {
  38. ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
  39. shiroFilter.setSecurityManager(securityManager);
  40. //oauth过滤
  41. Map<String, Filter> filters = new HashMap<>();
  42. filters.put("oauth2", new OAuth2Filter());
  43. shiroFilter.setFilters(filters);
  44. Map<String, String> filterMap = new LinkedHashMap<>();
  45. filterMap.put("/webjars/**", "anon");
  46. filterMap.put("/druid/**", "anon");
  47. filterMap.put("/app/**", "anon");
  48. filterMap.put("/sys/login", "anon");
  49. filterMap.put("/swagger/**", "anon");
  50. filterMap.put("/v2/api-docs", "anon");
  51. filterMap.put("/swagger-ui.html", "anon");
  52. filterMap.put("/swagger-resources/**", "anon");
  53. filterMap.put("/captcha.jpg", "anon");
  54. filterMap.put("/aaa.txt", "anon");
  55. filterMap.put("/**", "oauth2");
  56. shiroFilter.setFilterChainDefinitionMap(filterMap);
  57. return shiroFilter;
  58. }
  59. @Bean("lifecycleBeanPostProcessor")
  60. public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
  61. return new LifecycleBeanPostProcessor();
  62. }
  63. @Bean
  64. public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
  65. AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
  66. advisor.setSecurityManager(securityManager);
  67. return advisor;
  68. }
  69. }