|
@@ -5,26 +5,25 @@ import com.simuwang.base.components.ShiroLoginAuthAdapter;
|
|
import com.simuwang.base.components.ShiroRsaCredentialsMatcher;
|
|
import com.simuwang.base.components.ShiroRsaCredentialsMatcher;
|
|
import com.simuwang.base.components.UserAuthService;
|
|
import com.simuwang.base.components.UserAuthService;
|
|
import com.simuwang.shiro.core.ShiroDbRealm;
|
|
import com.simuwang.shiro.core.ShiroDbRealm;
|
|
|
|
+import com.simuwang.shiro.core.ShiroDbRealmImpl;
|
|
import com.simuwang.shiro.core.adapter.LoginAuthAdapter;
|
|
import com.simuwang.shiro.core.adapter.LoginAuthAdapter;
|
|
import com.simuwang.shiro.core.bridge.AuthBridgeService;
|
|
import com.simuwang.shiro.core.bridge.AuthBridgeService;
|
|
-import com.simuwang.shiro.core.ShiroDbRealmImpl;
|
|
|
|
import com.simuwang.shiro.core.jwt.JwtContext;
|
|
import com.simuwang.shiro.core.jwt.JwtContext;
|
|
import com.simuwang.shiro.core.jwt.JwtFilter;
|
|
import com.simuwang.shiro.core.jwt.JwtFilter;
|
|
import jakarta.servlet.Filter;
|
|
import jakarta.servlet.Filter;
|
|
import org.apache.shiro.authc.credential.CredentialsMatcher;
|
|
import org.apache.shiro.authc.credential.CredentialsMatcher;
|
|
|
|
+import org.apache.shiro.mgt.DefaultSessionStorageEvaluator;
|
|
|
|
+import org.apache.shiro.mgt.DefaultSubjectDAO;
|
|
import org.apache.shiro.spring.LifecycleBeanPostProcessor;
|
|
import org.apache.shiro.spring.LifecycleBeanPostProcessor;
|
|
import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
|
|
import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
|
|
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
|
|
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
|
|
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
|
|
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.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.context.annotation.DependsOn;
|
|
import org.springframework.context.annotation.DependsOn;
|
|
|
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
-import java.util.List;
|
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
|
@Configuration
|
|
@Configuration
|
|
@@ -63,15 +62,15 @@ public class ShiroConfig {
|
|
return new AuthBridgeService(this.authAdapter());
|
|
return new AuthBridgeService(this.authAdapter());
|
|
}
|
|
}
|
|
|
|
|
|
- /**
|
|
|
|
- * 创建cookie对象
|
|
|
|
- */
|
|
|
|
- @Bean(name = "sessionIdCookie")
|
|
|
|
- public SimpleCookie simpleCookie() {
|
|
|
|
- SimpleCookie simpleCookie = new SimpleCookie();
|
|
|
|
- simpleCookie.setName("ShiroSession");
|
|
|
|
- return simpleCookie;
|
|
|
|
- }
|
|
|
|
|
|
+// /**
|
|
|
|
+// * 创建cookie对象
|
|
|
|
+// */
|
|
|
|
+// @Bean(name = "sessionIdCookie")
|
|
|
|
+// public SimpleCookie simpleCookie() {
|
|
|
|
+// SimpleCookie simpleCookie = new SimpleCookie();
|
|
|
|
+// simpleCookie.setName("ShiroSession");
|
|
|
|
+// return simpleCookie;
|
|
|
|
+// }
|
|
|
|
|
|
/**
|
|
/**
|
|
* 权限管理器
|
|
* 权限管理器
|
|
@@ -80,7 +79,13 @@ public class ShiroConfig {
|
|
public DefaultWebSecurityManager defaultWebSecurityManager() {
|
|
public DefaultWebSecurityManager defaultWebSecurityManager() {
|
|
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
|
|
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
|
|
securityManager.setRealm(shiroDbRealm());
|
|
securityManager.setRealm(shiroDbRealm());
|
|
- securityManager.setSessionManager(shiroSessionManager());
|
|
|
|
|
|
+// securityManager.setSessionManager(shiroSessionManager());
|
|
|
|
+ // 关闭shiro自带的session
|
|
|
|
+ DefaultSubjectDAO subjectDAO = new DefaultSubjectDAO();
|
|
|
|
+ DefaultSessionStorageEvaluator evaluator = new DefaultSessionStorageEvaluator();
|
|
|
|
+ evaluator.setSessionStorageEnabled(false);
|
|
|
|
+ subjectDAO.setSessionStorageEvaluator(evaluator);
|
|
|
|
+ securityManager.setSubjectDAO(subjectDAO);
|
|
return securityManager;
|
|
return securityManager;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -107,18 +112,20 @@ public class ShiroConfig {
|
|
return new ShiroDbRealmImpl(this.authBridgeService(), this.credentialsMatcher());
|
|
return new ShiroDbRealmImpl(this.authBridgeService(), this.credentialsMatcher());
|
|
}
|
|
}
|
|
|
|
|
|
- /**
|
|
|
|
- * 会话管理器
|
|
|
|
- */
|
|
|
|
- @Bean(name = "sessionManager")
|
|
|
|
- public DefaultWebSessionManager shiroSessionManager() {
|
|
|
|
- DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
|
|
|
|
- sessionManager.setSessionValidationSchedulerEnabled(false);
|
|
|
|
- sessionManager.setSessionIdCookieEnabled(true);
|
|
|
|
- sessionManager.setSessionIdCookie(simpleCookie());
|
|
|
|
- sessionManager.setGlobalSessionTimeout(3600000);
|
|
|
|
- return sessionManager;
|
|
|
|
- }
|
|
|
|
|
|
+// /**
|
|
|
|
+// * 会话管理器
|
|
|
|
+// */
|
|
|
|
+// @Bean(name = "sessionManager")
|
|
|
|
+// public DefaultWebSessionManager shiroSessionManager() {
|
|
|
|
+// DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
|
|
|
|
+//// sessionManager.setSessionValidationSchedulerEnabled(false);
|
|
|
|
+//// sessionManager.setSessionIdCookieEnabled(true);
|
|
|
|
+//// sessionManager.setSessionIdCookie(simpleCookie());
|
|
|
|
+//// sessionManager.setGlobalSessionTimeout(3600000);
|
|
|
|
+// // 关闭session校验轮训
|
|
|
|
+// sessionManager.setSessionValidationSchedulerEnabled(false);
|
|
|
|
+// return sessionManager;
|
|
|
|
+// }
|
|
|
|
|
|
/**
|
|
/**
|
|
* AOP式方法级权限检查
|
|
* AOP式方法级权限检查
|
|
@@ -150,7 +157,7 @@ public class ShiroConfig {
|
|
shiroFilter.setSecurityManager(this.defaultWebSecurityManager());
|
|
shiroFilter.setSecurityManager(this.defaultWebSecurityManager());
|
|
// 新增过滤器
|
|
// 新增过滤器
|
|
Map<String, Filter> filterMap = MapUtil.newHashMap(true);
|
|
Map<String, Filter> filterMap = MapUtil.newHashMap(true);
|
|
- filterMap.put("jwt", new JwtFilter(this.jwtContext));
|
|
|
|
|
|
+ filterMap.put("jwt", new JwtFilter(this.jwtContext, this.authAdapter()));
|
|
shiroFilter.setFilters(filterMap);
|
|
shiroFilter.setFilters(filterMap);
|
|
// 过滤器链配置
|
|
// 过滤器链配置
|
|
Map<String, String> filterChainMap = MapUtil.newHashMap(16, true);
|
|
Map<String, String> filterChainMap = MapUtil.newHashMap(16, true);
|