ShiroConfig.java 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package io.renren.config;
  2. import io.renren.modules.sys.oauth2.OAuth2Filter;
  3. import io.renren.modules.sys.oauth2.OAuth2Realm;
  4. import org.apache.shiro.mgt.SecurityManager;
  5. import org.apache.shiro.session.mgt.SessionManager;
  6. import org.apache.shiro.spring.LifecycleBeanPostProcessor;
  7. import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
  8. import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
  9. import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
  10. import org.apache.shiro.web.session.mgt.DefaultWebSessionManager;
  11. import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
  12. import org.springframework.context.annotation.Bean;
  13. import org.springframework.context.annotation.Configuration;
  14. import javax.servlet.Filter;
  15. import java.util.HashMap;
  16. import java.util.LinkedHashMap;
  17. import java.util.Map;
  18. /**
  19. * Shiro配置
  20. *
  21. * @author chenshun
  22. * @email sunlightcs@gmail.com
  23. * @date 2017-04-20 18:33
  24. */
  25. @Configuration
  26. public class ShiroConfig {
  27. @Bean("sessionManager")
  28. public SessionManager sessionManager(){
  29. DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
  30. sessionManager.setSessionValidationSchedulerEnabled(true);
  31. sessionManager.setSessionIdCookieEnabled(false);
  32. return sessionManager;
  33. }
  34. @Bean("securityManager")
  35. public SecurityManager securityManager(OAuth2Realm oAuth2Realm, SessionManager sessionManager) {
  36. DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
  37. securityManager.setRealm(oAuth2Realm);
  38. securityManager.setSessionManager(sessionManager);
  39. return securityManager;
  40. }
  41. @Bean("shiroFilter")
  42. public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) {
  43. ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
  44. shiroFilter.setSecurityManager(securityManager);
  45. //oauth过滤
  46. Map<String, Filter> filters = new HashMap<>();
  47. filters.put("oauth2", new OAuth2Filter());
  48. shiroFilter.setFilters(filters);
  49. Map<String, String> filterMap = new LinkedHashMap<>();
  50. filterMap.put("/webjars/**", "anon");
  51. filterMap.put("/druid/**", "anon");
  52. filterMap.put("/api/**", "anon");
  53. filterMap.put("/sys/login", "anon");
  54. filterMap.put("/**/*.css", "anon");
  55. filterMap.put("/**/*.js", "anon");
  56. filterMap.put("/**/*.html", "anon");
  57. filterMap.put("/fonts/**", "anon");
  58. filterMap.put("/plugins/**", "anon");
  59. filterMap.put("/swagger/**", "anon");
  60. filterMap.put("/favicon.ico", "anon");
  61. filterMap.put("/", "anon");
  62. filterMap.put("/**", "oauth2");
  63. shiroFilter.setFilterChainDefinitionMap(filterMap);
  64. return shiroFilter;
  65. }
  66. @Bean("lifecycleBeanPostProcessor")
  67. public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
  68. return new LifecycleBeanPostProcessor();
  69. }
  70. @Bean
  71. public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
  72. DefaultAdvisorAutoProxyCreator proxyCreator = new DefaultAdvisorAutoProxyCreator();
  73. proxyCreator.setProxyTargetClass(true);
  74. return proxyCreator;
  75. }
  76. @Bean
  77. public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
  78. AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
  79. advisor.setSecurityManager(securityManager);
  80. return advisor;
  81. }
  82. }