Ver código fonte

依赖管理+注释

wangzaijun 7 meses atrás
pai
commit
2172050e30

+ 21 - 7
pom.xml

@@ -15,7 +15,7 @@
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
-<!--        <pagehelper.boot.version>2.0.0</pagehelper.boot.version>-->
+        <pagehelper.boot.version>2.0.0</pagehelper.boot.version>
         <data-calc.version>0.1.8-SNAPSHOT</data-calc.version>
         <joda-time.version>2.12.7</joda-time.version>
         <commons-math3.version>3.6.1</commons-math3.version>
@@ -24,6 +24,8 @@
         <dameng.version>8.1.3.62</dameng.version>
         <daq.version>1.0.0</daq.version>
         <apache-shiro.version>2.0.1</apache-shiro.version>
+        <java-jwt.version>4.4.0</java-jwt.version>
+        <jjwt.version>0.12.6</jjwt.version>
     </properties>
 
     <modules>
@@ -45,12 +47,12 @@
                 <scope>import</scope>
             </dependency>
 
-<!--            &lt;!&ndash; pagehelper 分页插件 &ndash;&gt;-->
-<!--            <dependency>-->
-<!--                <groupId>com.github.pagehelper</groupId>-->
-<!--                <artifactId>pagehelper-spring-boot-starter</artifactId>-->
-<!--                <version>${pagehelper.boot.version}</version>-->
-<!--            </dependency>-->
+            <!-- pagehelper 分页插件 -->
+            <dependency>
+                <groupId>com.github.pagehelper</groupId>
+                <artifactId>pagehelper-spring-boot-starter</artifactId>
+                <version>${pagehelper.boot.version}</version>
+            </dependency>
 
             <dependency>
                 <groupId>com.baomidou</groupId>
@@ -138,6 +140,18 @@
                 <version>${hutool.version}</version>
             </dependency>
 
+            <!-- jjwt依赖包 -->
+            <dependency>
+                <groupId>com.auth0</groupId>
+                <artifactId>java-jwt</artifactId>
+                <version>${java-jwt.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.jsonwebtoken</groupId>
+                <artifactId>jjwt</artifactId>
+                <version>${jjwt.version}</version>
+            </dependency>
+
             <!-- 内部模块 -->
             <dependency>
                 <groupId>com.simuwang</groupId>

+ 0 - 15
service-base/pom.xml

@@ -37,7 +37,6 @@
         <dependency>
             <groupId>com.github.pagehelper</groupId>
             <artifactId>pagehelper-spring-boot-starter</artifactId>
-            <version>2.0.0</version>
             <!-- 去除mybatis依赖 -->
             <exclusions>
                 <exclusion>
@@ -50,16 +49,6 @@
                 </exclusion>
             </exclusions>
         </dependency>
-<!--        <dependency>-->
-<!--            <groupId>com.baomidou</groupId>-->
-<!--            <artifactId>mybatis-plus</artifactId>-->
-<!--            <version>3.5.7</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.mybatis.spring.boot</groupId>-->
-<!--            <artifactId>mybatis-spring-boot-starter</artifactId>-->
-<!--            <version>3.0.3</version>-->
-<!--        </dependency>-->
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
@@ -119,7 +108,6 @@
         <dependency>
             <groupId>cn.hutool</groupId>
             <artifactId>hutool-json</artifactId>
-            <version>5.8.31</version>
         </dependency>
         <dependency>
             <groupId>org.projectlombok</groupId>
@@ -140,7 +128,6 @@
         <dependency>
             <groupId>org.eclipse.angus</groupId>
             <artifactId>angus-mail</artifactId>
-            <version>2.0.1</version>
         </dependency>
         <dependency>
             <groupId>commons-fileupload</groupId>
@@ -176,12 +163,10 @@
         <dependency>
             <groupId>com.auth0</groupId>
             <artifactId>java-jwt</artifactId>
-            <version>4.4.0</version>
         </dependency>
         <dependency>
             <groupId>io.jsonwebtoken</groupId>
             <artifactId>jjwt</artifactId>
-            <version>0.12.1</version>
         </dependency>
     </dependencies>
 </project>

+ 0 - 2
service-base/src/main/java/com/simuwang/base/config/DaqProperties.java

@@ -1,13 +1,11 @@
 package com.simuwang.base.config;
 
-import cn.hutool.core.map.MapUtil;
 import lombok.Getter;
 import lombok.Setter;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Configuration;
 
 import java.util.List;
-import java.util.Map;
 
 @Setter
 @Getter

+ 31 - 24
service-base/src/main/java/com/simuwang/base/config/ShiroConfig.java

@@ -7,8 +7,8 @@ import com.simuwang.shiro.core.ShiroDbRealm;
 import com.simuwang.shiro.core.adapter.LoginAuthAdapter;
 import com.simuwang.shiro.core.bridge.AuthBridgeService;
 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.JwtUtil;
 import jakarta.servlet.Filter;
 import org.apache.shiro.authc.credential.CredentialsMatcher;
 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.session.mgt.DefaultWebSessionManager;
 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.Configuration;
 import org.springframework.context.annotation.DependsOn;
@@ -28,11 +27,18 @@ import java.util.Map;
 
 @Configuration
 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")
     public static LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() {
@@ -50,13 +56,13 @@ public class ShiroConfig {
         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")
     public SimpleCookie simpleCookie() {
@@ -66,7 +72,7 @@ public class ShiroConfig {
     }
 
     /**
-     * @Description 权限管理器
+     * 权限管理器
      */
     @Bean(name = "securityManager")
     public DefaultWebSecurityManager defaultWebSecurityManager() {
@@ -79,7 +85,7 @@ public class ShiroConfig {
     /**
      * 自定义的密码匹配器,rsa
      *
-     * @return
+     * @return /
      */
     @Bean
     public CredentialsMatcher credentialsMatcher() {
@@ -92,15 +98,15 @@ public class ShiroConfig {
     }
 
     /**
-     * @Description 自定义RealmImpl
+     * 自定义RealmImpl
      */
     @Bean(name = "shiroDbRealm")
     public ShiroDbRealm shiroDbRealm() {
-        return new ShiroDbRealmImpl(this.authBridgeService(), this.credentialsMatcher());
+        return new ShiroDbRealmImpl(this.authBridgeService, this.credentialsMatcher());
     }
 
     /**
-     * @Description 会话管理器
+     * 会话管理器
      */
     @Bean(name = "sessionManager")
     public DefaultWebSessionManager shiroSessionManager() {
@@ -113,7 +119,7 @@ public class ShiroConfig {
     }
 
     /**
-     * @Description AOP式方法级权限检查
+     * AOP式方法级权限检查
      */
     @Bean
     @DependsOn("lifecycleBeanPostProcessor")
@@ -124,7 +130,7 @@ public class ShiroConfig {
     }
 
     /**
-     * @Description 配合DefaultAdvisorAutoProxyCreator事项注解权限校验
+     * 配合DefaultAdvisorAutoProxyCreator事项注解权限校验
      */
     @Bean
     public AuthorizationAttributeSourceAdvisor getAuthorizationAttributeSourceAdvisor() {
@@ -134,7 +140,7 @@ public class ShiroConfig {
     }
 
     /**
-     * @Description 过滤器链
+     * 过滤器链
      */
     private Map<String, String> filterChainDefinition() {
         Map<String, String> map = MapUtil.newHashMap(20, true);
@@ -147,19 +153,19 @@ public class ShiroConfig {
         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() {
         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;
     }
 
     /**
-     * @Description Shiro过滤器
+     * Shiro过滤器
      */
     @Bean("shiroFilter")
     public ShiroFilterFactoryBean shiroFilterFactoryBean() {
@@ -167,6 +173,7 @@ public class ShiroConfig {
         shiroFilter.setSecurityManager(this.defaultWebSecurityManager());
         shiroFilter.setFilters(this.filterMap());
         shiroFilter.setFilterChainDefinitionMap(this.filterChainDefinition());
+        // 去掉,防止404路由自动跳转到登录请求
 //        shiroFilter.setLoginUrl("/v1/login");
 //        shiroFilter.setUnauthorizedUrl("/v1/login");
         return shiroFilter;

+ 4 - 4
service-base/src/main/java/com/simuwang/shiro/core/jwt/JwtUtil.java

@@ -19,18 +19,18 @@ import java.util.Date;
 import java.util.Map;
 
 @Component
-public class JwtUtil {
+public class JwtContext {
     public static final String HEADER = "Authorization";
     //    private static final String SECRET = "qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm12";
 //    private static final long EXPIRE = 60 * 24 * 7;
     private static final Cache<String, String> USER_TOKEN_CACHE = Caffeine.newBuilder().maximumSize(16384L).build();
     private final DaqProperties properties;
-    public JwtUtil(DaqProperties properties) {
+    public JwtContext(DaqProperties properties) {
         this.properties = properties;
     }
 
 //    public static void main(String[] args) {
-//        JwtUtil jwtUtil = new JwtUtil();
+//        JwtContext jwtUtil = new JwtContext();
 //        String token = jwtUtil.generateToken("admin");
 //        System.out.println("token = " + token);
 //
@@ -101,7 +101,7 @@ public class JwtUtil {
             DecodedJWT jwt = JWT.decode(token);
             return jwt.getClaim(filed).asString();
         } catch (JWTDecodeException e) {
-//            log.error("JwtUtil getClaimFiled error: ", e);
+//            log.error("JwtContext getClaimFiled error: ", e);
             return null;
         }
     }

+ 6 - 6
service-base/src/main/java/com/simuwang/shiro/core/jwt/JwtFilter.java

@@ -31,11 +31,11 @@ public class JwtFilter extends AccessControlFilter {
     private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
     private final DaqProperties properties;
-    private final JwtUtil jwtUtil;
+    private final JwtContext jwtContext;
 
-    public JwtFilter(DaqProperties properties, JwtUtil jwtUtil) {
+    public JwtFilter(DaqProperties properties, JwtContext jwtContext) {
         this.properties = properties;
-        this.jwtUtil = jwtUtil;
+        this.jwtContext = jwtContext;
     }
 
     /**
@@ -80,20 +80,20 @@ public class JwtFilter extends AccessControlFilter {
                 }
             }
         }
-        String token = request.getHeader(JwtUtil.HEADER);
+        String token = request.getHeader(JwtContext.HEADER);
         if (StrUtil.isBlank(token)) {
             this.onLoginFail(servletResponse, "请先登录后操作");
             return false;
         }
         Claims claims;
         try {
-            claims = this.jwtUtil.getClaimsByToken(token);
+            claims = this.jwtContext.getClaimsByToken(token);
         } catch (ExpiredJwtException e) {
             this.onLoginFail(servletResponse, "登录已过期,请重新登录");
             return false;
         }
         String username = claims.getSubject();
-        String validToken = this.jwtUtil.getUserCache(username);
+        String validToken = this.jwtContext.getUserCache(username);
         if (!token.equals(validToken)) {
             this.onLoginFail(servletResponse, "token非法");
             return false;

+ 9 - 9
service-manage/src/main/java/com/simuwang/manage/api/LoginController.java

@@ -4,7 +4,7 @@ import cn.hutool.core.map.MapUtil;
 import com.simuwang.base.config.DaqProperties;
 import com.simuwang.manage.dto.LoginUser;
 import com.simuwang.shiro.core.ShiroToken;
-import com.simuwang.shiro.core.jwt.JwtUtil;
+import com.simuwang.shiro.core.jwt.JwtContext;
 import com.smppw.common.pojo.ResultVo;
 import com.smppw.common.pojo.enums.status.ResultCode;
 import jakarta.servlet.http.HttpServletResponse;
@@ -21,11 +21,11 @@ import java.util.Map;
 @RestController
 @RequestMapping("/v1")
 public class LoginController {
-    private final JwtUtil jwtUtil;
+    private final JwtContext jwtContext;
     private final DaqProperties properties;
 
-    public LoginController(JwtUtil jwtUtil, DaqProperties properties) {
-        this.jwtUtil = jwtUtil;
+    public LoginController(JwtContext jwtContext, DaqProperties properties) {
+        this.jwtContext = jwtContext;
         this.properties = properties;
     }
 
@@ -42,10 +42,10 @@ public class LoginController {
             Subject subject = SecurityUtils.getSubject();
             subject.login(shiroToken);
 
-            token = jwtUtil.generateToken(loginUser.getUsername());
-            this.jwtUtil.setUserCache(token);
-            response.setHeader(JwtUtil.HEADER, token);
-            response.setHeader("Access-control-Expost-Headers", JwtUtil.HEADER);
+            token = jwtContext.generateToken(loginUser.getUsername());
+            this.jwtContext.setUserCache(token);
+            response.setHeader(JwtContext.HEADER, token);
+            response.setHeader("Access-control-Expost-Headers", JwtContext.HEADER);
         } catch (UnknownAccountException | IncorrectCredentialsException exception) {
             return ResultVo.fail(ResultCode.AUTH_FAILD);
         }
@@ -56,7 +56,7 @@ public class LoginController {
     @PostMapping("/logout")
     public void logout() {
         Subject subject = SecurityUtils.getSubject();
-        this.jwtUtil.cleanUserCache(subject.getPrincipal().toString());
+        this.jwtContext.cleanUserCache(subject.getPrincipal().toString());
         subject.logout();
     }