|
@@ -0,0 +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;
|
|
|
|
+// }
|
|
|
|
+//}
|