|
@@ -7,8 +7,8 @@ import com.simuwang.shiro.core.ShiroDbRealm;
|
|
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.impl.ShiroDbRealmImpl;
|
|
import com.simuwang.shiro.core.impl.ShiroDbRealmImpl;
|
|
|
|
+import com.simuwang.shiro.core.jwt.JwtContext;
|
|
import com.simuwang.shiro.core.jwt.JwtFilter;
|
|
import com.simuwang.shiro.core.jwt.JwtFilter;
|
|
-import com.simuwang.shiro.core.jwt.JwtUtil;
|
|
|
|
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.spring.LifecycleBeanPostProcessor;
|
|
import org.apache.shiro.spring.LifecycleBeanPostProcessor;
|
|
@@ -18,7 +18,6 @@ import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
|
|
import org.apache.shiro.web.servlet.SimpleCookie;
|
|
import org.apache.shiro.web.servlet.SimpleCookie;
|
|
import org.apache.shiro.web.session.mgt.DefaultWebSessionManager;
|
|
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.beans.factory.annotation.Autowired;
|
|
|
|
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;
|
|
@@ -28,11 +27,18 @@ import java.util.Map;
|
|
|
|
|
|
@Configuration
|
|
@Configuration
|
|
public class ShiroConfig {
|
|
public class ShiroConfig {
|
|
- @Autowired
|
|
|
|
- private DaqProperties properties;
|
|
|
|
|
|
+ private final JwtContext jwtContext;
|
|
|
|
+ private final DaqProperties properties;
|
|
|
|
+ private final AuthBridgeService authBridgeService;
|
|
|
|
+
|
|
|
|
+ public ShiroConfig(DaqProperties properties, JwtContext jwtContext, AuthBridgeService authBridgeService) {
|
|
|
|
+ this.jwtContext = jwtContext;
|
|
|
|
+ this.properties = properties;
|
|
|
|
+ this.authBridgeService = authBridgeService;
|
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
/**
|
|
- * @Description 保证实现了Shiro内部lifecycle函数的bean执行
|
|
|
|
|
|
+ * 保证实现了Shiro内部lifecycle函数的bean执行
|
|
*/
|
|
*/
|
|
@Bean(name = "lifecycleBeanPostProcessor")
|
|
@Bean(name = "lifecycleBeanPostProcessor")
|
|
public static LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() {
|
|
public static LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() {
|
|
@@ -50,13 +56,13 @@ public class ShiroConfig {
|
|
return new ShiroLoginAuthAdapter(this.properties);
|
|
return new ShiroLoginAuthAdapter(this.properties);
|
|
}
|
|
}
|
|
|
|
|
|
- @Bean
|
|
|
|
- public AuthBridgeService authBridgeService() {
|
|
|
|
- return new AuthBridgeService(this.authAdapter());
|
|
|
|
- }
|
|
|
|
|
|
+// @Bean
|
|
|
|
+// public AuthBridgeService authBridgeService() {
|
|
|
|
+// return new AuthBridgeService(this.authAdapter());
|
|
|
|
+// }
|
|
|
|
|
|
/**
|
|
/**
|
|
- * @Description 创建cookie对象
|
|
|
|
|
|
+ * 创建cookie对象
|
|
*/
|
|
*/
|
|
@Bean(name = "sessionIdCookie")
|
|
@Bean(name = "sessionIdCookie")
|
|
public SimpleCookie simpleCookie() {
|
|
public SimpleCookie simpleCookie() {
|
|
@@ -66,7 +72,7 @@ public class ShiroConfig {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * @Description 权限管理器
|
|
|
|
|
|
+ * 权限管理器
|
|
*/
|
|
*/
|
|
@Bean(name = "securityManager")
|
|
@Bean(name = "securityManager")
|
|
public DefaultWebSecurityManager defaultWebSecurityManager() {
|
|
public DefaultWebSecurityManager defaultWebSecurityManager() {
|
|
@@ -79,7 +85,7 @@ public class ShiroConfig {
|
|
/**
|
|
/**
|
|
* 自定义的密码匹配器,rsa
|
|
* 自定义的密码匹配器,rsa
|
|
*
|
|
*
|
|
- * @return
|
|
|
|
|
|
+ * @return /
|
|
*/
|
|
*/
|
|
@Bean
|
|
@Bean
|
|
public CredentialsMatcher credentialsMatcher() {
|
|
public CredentialsMatcher credentialsMatcher() {
|
|
@@ -92,15 +98,15 @@ public class ShiroConfig {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * @Description 自定义RealmImpl
|
|
|
|
|
|
+ * 自定义RealmImpl
|
|
*/
|
|
*/
|
|
@Bean(name = "shiroDbRealm")
|
|
@Bean(name = "shiroDbRealm")
|
|
public ShiroDbRealm shiroDbRealm() {
|
|
public ShiroDbRealm shiroDbRealm() {
|
|
- return new ShiroDbRealmImpl(this.authBridgeService(), this.credentialsMatcher());
|
|
|
|
|
|
+ return new ShiroDbRealmImpl(this.authBridgeService, this.credentialsMatcher());
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * @Description 会话管理器
|
|
|
|
|
|
+ * 会话管理器
|
|
*/
|
|
*/
|
|
@Bean(name = "sessionManager")
|
|
@Bean(name = "sessionManager")
|
|
public DefaultWebSessionManager shiroSessionManager() {
|
|
public DefaultWebSessionManager shiroSessionManager() {
|
|
@@ -113,7 +119,7 @@ public class ShiroConfig {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * @Description AOP式方法级权限检查
|
|
|
|
|
|
+ * AOP式方法级权限检查
|
|
*/
|
|
*/
|
|
@Bean
|
|
@Bean
|
|
@DependsOn("lifecycleBeanPostProcessor")
|
|
@DependsOn("lifecycleBeanPostProcessor")
|
|
@@ -124,7 +130,7 @@ public class ShiroConfig {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * @Description 配合DefaultAdvisorAutoProxyCreator事项注解权限校验
|
|
|
|
|
|
+ * 配合DefaultAdvisorAutoProxyCreator事项注解权限校验
|
|
*/
|
|
*/
|
|
@Bean
|
|
@Bean
|
|
public AuthorizationAttributeSourceAdvisor getAuthorizationAttributeSourceAdvisor() {
|
|
public AuthorizationAttributeSourceAdvisor getAuthorizationAttributeSourceAdvisor() {
|
|
@@ -134,7 +140,7 @@ public class ShiroConfig {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * @Description 过滤器链
|
|
|
|
|
|
+ * 过滤器链
|
|
*/
|
|
*/
|
|
private Map<String, String> filterChainDefinition() {
|
|
private Map<String, String> filterChainDefinition() {
|
|
Map<String, String> map = MapUtil.newHashMap(20, true);
|
|
Map<String, String> map = MapUtil.newHashMap(20, true);
|
|
@@ -147,19 +153,19 @@ public class ShiroConfig {
|
|
return map;
|
|
return map;
|
|
}
|
|
}
|
|
|
|
|
|
- @Bean
|
|
|
|
- public JwtUtil jwtUtil() {
|
|
|
|
- return new JwtUtil(this.properties);
|
|
|
|
- }
|
|
|
|
|
|
+// @Bean
|
|
|
|
+// public JwtContext jwtUtil() {
|
|
|
|
+// return new JwtContext(this.properties);
|
|
|
|
+// }
|
|
|
|
|
|
private Map<String, Filter> filterMap() {
|
|
private Map<String, Filter> filterMap() {
|
|
HashMap<String, Filter> map = MapUtil.newHashMap();
|
|
HashMap<String, Filter> map = MapUtil.newHashMap();
|
|
- map.put("jwt", new JwtFilter(this.properties, this.jwtUtil()));
|
|
|
|
|
|
+ map.put("jwt", new JwtFilter(this.properties, this.jwtContext));
|
|
return map;
|
|
return map;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * @Description Shiro过滤器
|
|
|
|
|
|
+ * Shiro过滤器
|
|
*/
|
|
*/
|
|
@Bean("shiroFilter")
|
|
@Bean("shiroFilter")
|
|
public ShiroFilterFactoryBean shiroFilterFactoryBean() {
|
|
public ShiroFilterFactoryBean shiroFilterFactoryBean() {
|
|
@@ -167,6 +173,7 @@ public class ShiroConfig {
|
|
shiroFilter.setSecurityManager(this.defaultWebSecurityManager());
|
|
shiroFilter.setSecurityManager(this.defaultWebSecurityManager());
|
|
shiroFilter.setFilters(this.filterMap());
|
|
shiroFilter.setFilters(this.filterMap());
|
|
shiroFilter.setFilterChainDefinitionMap(this.filterChainDefinition());
|
|
shiroFilter.setFilterChainDefinitionMap(this.filterChainDefinition());
|
|
|
|
+ // 去掉,防止404路由自动跳转到登录请求
|
|
// shiroFilter.setLoginUrl("/v1/login");
|
|
// shiroFilter.setLoginUrl("/v1/login");
|
|
// shiroFilter.setUnauthorizedUrl("/v1/login");
|
|
// shiroFilter.setUnauthorizedUrl("/v1/login");
|
|
return shiroFilter;
|
|
return shiroFilter;
|