|
@@ -1,134 +1,134 @@
|
|
|
-//package com.simuwang.shiro.config;
|
|
|
-//
|
|
|
-//import com.simuwang.shiro.PropertiesUtil;
|
|
|
-//import com.simuwang.shiro.core.ShiroDbRealm;
|
|
|
-//import com.simuwang.shiro.core.adapter.AuthAdapter;
|
|
|
-//import com.simuwang.shiro.core.adapter.SimpleAuthAdapter;
|
|
|
-//import com.simuwang.shiro.core.bridge.AuthBridgeService;
|
|
|
-//import com.simuwang.shiro.core.impl.ShiroDbRealmImpl;
|
|
|
-//import org.apache.shiro.spring.LifecycleBeanPostProcessor;
|
|
|
-//import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
|
|
|
-//import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
|
|
|
-//import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
|
|
|
-//import org.apache.shiro.web.servlet.SimpleCookie;
|
|
|
-//import org.apache.shiro.web.session.mgt.DefaultWebSessionManager;
|
|
|
-//import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
|
|
|
-//import org.springframework.context.annotation.Bean;
|
|
|
-//import org.springframework.context.annotation.Configuration;
|
|
|
-//import org.springframework.context.annotation.DependsOn;
|
|
|
-//
|
|
|
-//import java.util.LinkedHashMap;
|
|
|
-//import java.util.List;
|
|
|
-//import java.util.Map;
|
|
|
-//
|
|
|
-//@Configuration
|
|
|
-//public class ShiroConfig {
|
|
|
-// /**
|
|
|
-// * @Description 保证实现了Shiro内部lifecycle函数的bean执行
|
|
|
-// */
|
|
|
-// @Bean(name = "lifecycleBeanPostProcessor")
|
|
|
-// public static LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() {
|
|
|
-// return new LifecycleBeanPostProcessor();
|
|
|
-// }
|
|
|
-//
|
|
|
-// @Bean
|
|
|
-// public AuthAdapter authAdapter() {
|
|
|
-// return new SimpleAuthAdapter();
|
|
|
-// }
|
|
|
-//
|
|
|
-// @Bean
|
|
|
-// public AuthBridgeService authBridgeService() {
|
|
|
-// return new AuthBridgeService(this.authAdapter());
|
|
|
-// }
|
|
|
-//
|
|
|
-// /**
|
|
|
-// * @Description 创建cookie对象
|
|
|
-// */
|
|
|
-// @Bean(name = "sessionIdCookie")
|
|
|
-// public SimpleCookie simpleCookie() {
|
|
|
-// SimpleCookie simpleCookie = new SimpleCookie();
|
|
|
-// simpleCookie.setName("ShiroSession");
|
|
|
-// return simpleCookie;
|
|
|
-// }
|
|
|
-//
|
|
|
-// /**
|
|
|
-// * @Description 权限管理器
|
|
|
-// */
|
|
|
-// @Bean(name = "securityManager")
|
|
|
-// public DefaultWebSecurityManager defaultWebSecurityManager() {
|
|
|
-// DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
|
|
|
-// securityManager.setRealm(shiroDbRealm());
|
|
|
-// securityManager.setSessionManager(shiroSessionManager());
|
|
|
-// return securityManager;
|
|
|
-// }
|
|
|
-//
|
|
|
-// /**
|
|
|
-// * @Description 自定义RealmImpl
|
|
|
-// */
|
|
|
-// @Bean(name = "shiroDbRealm")
|
|
|
-// public ShiroDbRealm shiroDbRealm() {
|
|
|
-// return new ShiroDbRealmImpl(this.authBridgeService());
|
|
|
-// }
|
|
|
-//
|
|
|
-// /**
|
|
|
-// * @Description 会话管理器
|
|
|
-// */
|
|
|
-// @Bean(name = "sessionManager")
|
|
|
-// public DefaultWebSessionManager shiroSessionManager() {
|
|
|
-// DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
|
|
|
-// sessionManager.setSessionValidationSchedulerEnabled(false);
|
|
|
-// sessionManager.setSessionIdCookieEnabled(true);
|
|
|
-// sessionManager.setSessionIdCookie(simpleCookie());
|
|
|
-// sessionManager.setGlobalSessionTimeout(3600000);
|
|
|
-// return sessionManager;
|
|
|
-// }
|
|
|
-//
|
|
|
-// /**
|
|
|
-// * @Description AOP式方法级权限检查
|
|
|
-// */
|
|
|
-// @Bean
|
|
|
-// @DependsOn("lifecycleBeanPostProcessor")
|
|
|
-// public DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator() {
|
|
|
-// DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
|
|
|
-// defaultAdvisorAutoProxyCreator.setProxyTargetClass(true);
|
|
|
-// return defaultAdvisorAutoProxyCreator;
|
|
|
-// }
|
|
|
-//
|
|
|
-// /**
|
|
|
-// * @Description 配合DefaultAdvisorAutoProxyCreator事项注解权限校验
|
|
|
-// */
|
|
|
-// @Bean
|
|
|
-// public AuthorizationAttributeSourceAdvisor getAuthorizationAttributeSourceAdvisor() {
|
|
|
-// AuthorizationAttributeSourceAdvisor aasa = new AuthorizationAttributeSourceAdvisor();
|
|
|
-// aasa.setSecurityManager(defaultWebSecurityManager());
|
|
|
-// return new AuthorizationAttributeSourceAdvisor();
|
|
|
-// }
|
|
|
-//
|
|
|
-// /**
|
|
|
-// * @Description 过滤器链
|
|
|
-// */
|
|
|
-// private Map<String, String> filterChainDefinition() {
|
|
|
-// List<Object> list = PropertiesUtil.propertiesShiro.getKeyList();
|
|
|
-// Map<String, String> map = new LinkedHashMap<>();
|
|
|
-// for (Object object : list) {
|
|
|
-// String key = object.toString();
|
|
|
-// String value = PropertiesUtil.getShiroValue(key);
|
|
|
-//// log.info("读取防止盗链控制:---key{},---value:{}", key, value);
|
|
|
-// map.put(key, value);
|
|
|
-// }
|
|
|
-// return map;
|
|
|
-// }
|
|
|
-//
|
|
|
-// /**
|
|
|
-// * @Description Shiro过滤器
|
|
|
-// */
|
|
|
-// @Bean("shiroFilter")
|
|
|
-// public ShiroFilterFactoryBean shiroFilterFactoryBean() {
|
|
|
-// ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
|
|
|
-// shiroFilter.setSecurityManager(defaultWebSecurityManager());
|
|
|
-// shiroFilter.setFilterChainDefinitionMap(filterChainDefinition());
|
|
|
-// shiroFilter.setLoginUrl("/login");
|
|
|
-// shiroFilter.setUnauthorizedUrl("/login");
|
|
|
-// return shiroFilter;
|
|
|
-// }
|
|
|
-//}
|
|
|
+package com.simuwang.shiro.config;
|
|
|
+
|
|
|
+import com.simuwang.shiro.PropertiesUtil;
|
|
|
+import com.simuwang.shiro.core.ShiroDbRealm;
|
|
|
+import com.simuwang.shiro.core.adapter.AuthAdapter;
|
|
|
+import com.simuwang.shiro.core.adapter.SimpleAuthAdapter;
|
|
|
+import com.simuwang.shiro.core.bridge.AuthBridgeService;
|
|
|
+import com.simuwang.shiro.core.impl.ShiroDbRealmImpl;
|
|
|
+import org.apache.shiro.spring.LifecycleBeanPostProcessor;
|
|
|
+import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
|
|
|
+import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
|
|
|
+import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
|
|
|
+import org.apache.shiro.web.servlet.SimpleCookie;
|
|
|
+import org.apache.shiro.web.session.mgt.DefaultWebSessionManager;
|
|
|
+import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
|
|
|
+import org.springframework.context.annotation.Bean;
|
|
|
+import org.springframework.context.annotation.Configuration;
|
|
|
+import org.springframework.context.annotation.DependsOn;
|
|
|
+
|
|
|
+import java.util.LinkedHashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+@Configuration
|
|
|
+public class ShiroConfig {
|
|
|
+ /**
|
|
|
+ * @Description 保证实现了Shiro内部lifecycle函数的bean执行
|
|
|
+ */
|
|
|
+ @Bean(name = "lifecycleBeanPostProcessor")
|
|
|
+ public static LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() {
|
|
|
+ return new LifecycleBeanPostProcessor();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ public AuthAdapter authAdapter() {
|
|
|
+ return new SimpleAuthAdapter();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ public AuthBridgeService authBridgeService() {
|
|
|
+ return new AuthBridgeService(this.authAdapter());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Description 创建cookie对象
|
|
|
+ */
|
|
|
+ @Bean(name = "sessionIdCookie")
|
|
|
+ public SimpleCookie simpleCookie() {
|
|
|
+ SimpleCookie simpleCookie = new SimpleCookie();
|
|
|
+ simpleCookie.setName("ShiroSession");
|
|
|
+ return simpleCookie;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Description 权限管理器
|
|
|
+ */
|
|
|
+ @Bean(name = "securityManager")
|
|
|
+ public DefaultWebSecurityManager defaultWebSecurityManager() {
|
|
|
+ DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
|
|
|
+ securityManager.setRealm(shiroDbRealm());
|
|
|
+ securityManager.setSessionManager(shiroSessionManager());
|
|
|
+ return securityManager;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Description 自定义RealmImpl
|
|
|
+ */
|
|
|
+ @Bean(name = "shiroDbRealm")
|
|
|
+ public ShiroDbRealm shiroDbRealm() {
|
|
|
+ return new ShiroDbRealmImpl(this.authBridgeService());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Description 会话管理器
|
|
|
+ */
|
|
|
+ @Bean(name = "sessionManager")
|
|
|
+ public DefaultWebSessionManager shiroSessionManager() {
|
|
|
+ DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
|
|
|
+ sessionManager.setSessionValidationSchedulerEnabled(false);
|
|
|
+ sessionManager.setSessionIdCookieEnabled(true);
|
|
|
+ sessionManager.setSessionIdCookie(simpleCookie());
|
|
|
+ sessionManager.setGlobalSessionTimeout(3600000);
|
|
|
+ return sessionManager;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Description AOP式方法级权限检查
|
|
|
+ */
|
|
|
+ @Bean
|
|
|
+ @DependsOn("lifecycleBeanPostProcessor")
|
|
|
+ public DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator() {
|
|
|
+ DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
|
|
|
+ defaultAdvisorAutoProxyCreator.setProxyTargetClass(true);
|
|
|
+ return defaultAdvisorAutoProxyCreator;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Description 配合DefaultAdvisorAutoProxyCreator事项注解权限校验
|
|
|
+ */
|
|
|
+ @Bean
|
|
|
+ public AuthorizationAttributeSourceAdvisor getAuthorizationAttributeSourceAdvisor() {
|
|
|
+ AuthorizationAttributeSourceAdvisor aasa = new AuthorizationAttributeSourceAdvisor();
|
|
|
+ aasa.setSecurityManager(defaultWebSecurityManager());
|
|
|
+ return new AuthorizationAttributeSourceAdvisor();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Description 过滤器链
|
|
|
+ */
|
|
|
+ private Map<String, String> filterChainDefinition() {
|
|
|
+ List<Object> list = PropertiesUtil.propertiesShiro.getKeyList();
|
|
|
+ Map<String, String> map = new LinkedHashMap<>();
|
|
|
+ for (Object object : list) {
|
|
|
+ String key = object.toString();
|
|
|
+ String value = PropertiesUtil.getShiroValue(key);
|
|
|
+// log.info("读取防止盗链控制:---key{},---value:{}", key, value);
|
|
|
+ map.put(key, value);
|
|
|
+ }
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Description Shiro过滤器
|
|
|
+ */
|
|
|
+ @Bean("shiroFilter")
|
|
|
+ public ShiroFilterFactoryBean shiroFilterFactoryBean() {
|
|
|
+ ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
|
|
|
+ shiroFilter.setSecurityManager(defaultWebSecurityManager());
|
|
|
+ shiroFilter.setFilterChainDefinitionMap(filterChainDefinition());
|
|
|
+ shiroFilter.setLoginUrl("/login");
|
|
|
+ shiroFilter.setUnauthorizedUrl("/login");
|
|
|
+ return shiroFilter;
|
|
|
+ }
|
|
|
+}
|