ShiroConfig.java 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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.setSessionIdUrlRewritingEnabled(false);
  32. //sessionManager.setSessionIdCookieEnabled(false);
  33. return sessionManager;
  34. }
  35. @Bean("securityManager")
  36. public SecurityManager securityManager(OAuth2Realm oAuth2Realm, SessionManager sessionManager) {
  37. DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
  38. securityManager.setRealm(oAuth2Realm);
  39. securityManager.setSessionManager(sessionManager);
  40. return securityManager;
  41. }
  42. @Bean("shiroFilter")
  43. public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) {
  44. ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
  45. shiroFilter.setSecurityManager(securityManager);
  46. //oauth过滤
  47. Map<String, Filter> filters = new HashMap<>();
  48. filters.put("oauth2", new OAuth2Filter());
  49. shiroFilter.setFilters(filters);
  50. Map<String, String> filterMap = new LinkedHashMap<>();
  51. filterMap.put("/webjars/**", "anon");
  52. filterMap.put("/druid/**", "anon");
  53. filterMap.put("/api/**", "anon");
  54. filterMap.put("/sys/login", "anon");
  55. filterMap.put("/**/*.css", "anon");
  56. filterMap.put("/**/*.js", "anon");
  57. filterMap.put("/**/*.html", "anon");
  58. filterMap.put("/fonts/**", "anon");
  59. filterMap.put("/plugins/**", "anon");
  60. filterMap.put("/swagger/**", "anon");
  61. filterMap.put("/favicon.ico", "anon");
  62. filterMap.put("/captcha.jpg", "anon");
  63. filterMap.put("/", "anon");
  64. filterMap.put("/**", "oauth2");
  65. shiroFilter.setFilterChainDefinitionMap(filterMap);
  66. return shiroFilter;
  67. }
  68. @Bean("lifecycleBeanPostProcessor")
  69. public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
  70. return new LifecycleBeanPostProcessor();
  71. }
  72. @Bean
  73. public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
  74. DefaultAdvisorAutoProxyCreator proxyCreator = new DefaultAdvisorAutoProxyCreator();
  75. proxyCreator.setProxyTargetClass(true);
  76. return proxyCreator;
  77. }
  78. @Bean
  79. public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
  80. AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
  81. advisor.setSecurityManager(securityManager);
  82. return advisor;
  83. }
  84. }