欧阳劲驰 1 месяц назад
Родитель
Сommit
f3395a1a76

+ 22 - 1
custom-gateway-app/pom.xml

@@ -10,6 +10,8 @@
 
     <!--工件名-->
     <artifactId>custom-gateway-app</artifactId>
+    <!--版本号-->
+    <version>${project.version}</version>
     <!--打包方式-->
     <packaging>jar</packaging>
     <!--项目名-->
@@ -23,7 +25,26 @@
         <dependency>
             <groupId>com.shkpr.service</groupId>
             <artifactId>custom-gateway-zydma</artifactId>
-            <version>1.0.0-dev</version>
+            <version>${project.version}</version>
         </dependency>
     </dependencies>
+
+    <!--构建脚本-->
+    <build>
+        <!-- 打成jar包的名称 -->
+        <finalName>custom-gateway-${project.version}</finalName>
+        <!--插件项-->
+        <plugins>
+            <!--maven-compiler-->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+            </plugin>
+            <!--spring-boot-->
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
 </project>

+ 1 - 1
custom-gateway-app/src/test/java/com/shkpr/service/CustomGatewayApplicationTests.java

@@ -1,4 +1,4 @@
-package com.shkpr.service;
+package com.shkpr.service.customgateway;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;

+ 7 - 10
custom-gateway-core/pom.xml

@@ -10,8 +10,10 @@
 
     <!--工件名-->
     <artifactId>custom-gateway-core</artifactId>
+    <!--版本号-->
+    <version>${project.version}</version>
     <!--打包方式-->
-    <packaging>jar</packaging>
+    <packaging>pom</packaging>
     <!--项目名-->
     <name>CustomGatewayCore</name>
     <!--项目描述-->
@@ -32,16 +34,11 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-security</artifactId>
         </dependency>
-        <!--jts-->
+        <!--jjwt-->
         <dependency>
-            <groupId>org.locationtech.jts</groupId>
-            <artifactId>jts-core</artifactId>
-            <version>${jts.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.locationtech.jts.io</groupId>
-            <artifactId>jts-io-common</artifactId>
-            <version>${jts.version}</version>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt</artifactId>
+            <version>${jjwt.version}</version>
         </dependency>
     </dependencies>
 </project>

+ 50 - 0
custom-gateway-core/src/main/java/com/shkpr/service/customgateway/core/constants/LoginUserRoleType.java

@@ -0,0 +1,50 @@
+package com.shkpr.service.customgateway.core.constants;
+
+public enum LoginUserRoleType {
+    ROOT_ADMIN(0,"admin"),
+    NORMAL_ADMIN(1,"normal_admin"),
+    USER(2,"user"),
+    GUEST(3,"guest");
+
+    private LoginUserRoleType(int index, String name) {
+        this.name = name;
+        this.index = index;
+    }
+    private String name;
+    private int index;
+    public int toIntValue(){return index;}
+    public String toStrValue() {return name;}
+
+    @Override
+    public String toString() {
+        return "LoginUserRoleType{" +
+                "name='" + name + '\'' +
+                ", index=" + index +
+                '}';
+    }
+
+    public static LoginUserRoleType valueFromInt(int nRole){
+        switch (nRole){
+            case 0:
+                return ROOT_ADMIN;
+            case 1:
+                return NORMAL_ADMIN;
+            case 2:
+                return USER;
+            case 3:
+                return GUEST;
+            default:
+                break;
+        }
+        return GUEST;
+    }
+
+    public static boolean isRootAdmin(String roleId){
+        return CommDefine.ADMIN_ROLE_ID.equals(roleId)
+                || CommDefine.INTERNAL_OPERATOR_ROLE_ID.equals(roleId);
+    }
+
+    public static String getRootAdminRoleId(){
+        return String.valueOf(ROOT_ADMIN.toIntValue());
+    }
+}

+ 80 - 0
custom-gateway-core/src/main/java/com/shkpr/service/customgateway/core/domain/AuthTokenData.java

@@ -0,0 +1,80 @@
+package com.shkpr.service.customgateway.core.domain;
+
+import com.global.base.tools.FastJsonUtil;
+
+import java.util.HashMap;
+
+public class AuthTokenData {
+    private String mStrToken = "";     //Token字符串
+    private long mLExpired = 0L;      //Token过期时间,单位:毫秒
+    private long mLIssue = 0L;        //Token签发时间,单位:毫秒
+    private String mStrFlagKey = "";  //用户id
+    private String roleid = "";
+
+    public AuthTokenData() {
+    }
+
+    public AuthTokenData(String mStrToken, long mLExpired, String mStrFlagKey) {
+        this.mStrToken = mStrToken;
+        this.mLExpired = mLExpired;
+        this.mStrFlagKey = mStrFlagKey;
+    }
+
+    public AuthTokenData(String mStrToken, long mLExpired, long mLIssue, String mStrFlagKey) {
+        this.mStrToken = mStrToken;
+        this.mLExpired = mLExpired;
+        this.mLIssue = mLIssue;
+        this.mStrFlagKey = mStrFlagKey;
+    }
+
+    public AuthTokenData(String mStrToken, long mLExpired, long mLIssue, String mStrFlagKey, String roleid) {
+        this.mStrToken = mStrToken;
+        this.mLExpired = mLExpired;
+        this.mLIssue = mLIssue;
+        this.mStrFlagKey = mStrFlagKey;
+        this.roleid = roleid;
+    }
+
+    public long getIssueAt() {
+        return mLIssue;
+    }
+
+    public void setIssueAt(long mLIssue) {
+        this.mLIssue = mLIssue;
+    }
+
+    public String getStrToken() {
+        return mStrToken;
+    }
+
+    public void setStrToken(String mStrToken) {
+        this.mStrToken = mStrToken;
+    }
+
+    public long getExpired() {
+        return mLExpired;
+    }
+
+    public void setExpired(long mLExpired) {
+        this.mLExpired = mLExpired;
+    }
+
+    public String getStrFlagKey() {
+        return mStrFlagKey;
+    }
+
+    public void setStrFlagKey(String mStrFlagKey) {
+        this.mStrFlagKey = mStrFlagKey;
+    }
+
+    public String getRoleid() { return roleid; }
+
+    public void setRoleid(String roleid) { this.roleid = roleid; }
+
+    public String toTokenJsonStr(){
+        HashMap<String, Object> mapObj = new HashMap<>(16);
+        mapObj.put("token", mStrToken);
+        mapObj.put("expired", mLExpired);
+        return FastJsonUtil.toJSON(mapObj);
+    }
+}

+ 90 - 0
custom-gateway-core/src/main/java/com/shkpr/service/customgateway/core/filter/GrantedAuthorityImpl.java

@@ -0,0 +1,90 @@
+package com.shkpr.service.customgateway.core.filter;
+
+import com.shkpr.service.customgateway.core.constants.LoginUserRoleType;
+import org.springframework.security.core.GrantedAuthority;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class GrantedAuthorityImpl implements GrantedAuthority {
+    private static volatile List<GrantedAuthorityImpl> msArrRootAdmin = null;
+    private static volatile List<GrantedAuthorityImpl> msArrAdmin = null;
+    private static volatile List<GrantedAuthorityImpl> msArrNormalUser = null;
+    private static volatile List<GrantedAuthorityImpl> msArrTempUser = null;
+
+    private String authority;
+    public GrantedAuthorityImpl(String authority) {
+        this.authority = authority;
+    }
+    public void setAuthority(String authority) {
+        this.authority = authority;
+    }
+    @Override
+    public String getAuthority() {
+        return this.authority;
+    }
+
+    public static List<GrantedAuthorityImpl> generateAuthority(LoginUserRoleType emType){
+        switch (emType){
+            case ROOT_ADMIN:{
+                if (msArrRootAdmin == null){
+                    synchronized(GrantedAuthorityImpl.class){
+                        if (msArrRootAdmin == null){
+                            msArrRootAdmin = new ArrayList<GrantedAuthorityImpl>();
+                            msArrRootAdmin.add(new GrantedAuthorityImpl(emType.toStrValue()));
+                        }
+                    }
+                }
+            }
+            return msArrRootAdmin;
+            case GUEST:{
+                if (msArrTempUser == null){
+                    synchronized(GrantedAuthorityImpl.class){
+                        if (msArrTempUser == null){
+                            msArrTempUser = new ArrayList<GrantedAuthorityImpl>();
+                            msArrTempUser.add(new GrantedAuthorityImpl(emType.toStrValue()));
+                        }
+                    }
+                }
+            }
+            return msArrTempUser;
+            case USER:{
+                if (msArrNormalUser == null){
+                    synchronized(GrantedAuthorityImpl.class){
+                        if (msArrNormalUser == null){
+                            msArrNormalUser = new ArrayList<GrantedAuthorityImpl>();
+                            msArrNormalUser.add(new GrantedAuthorityImpl(emType.toStrValue()));
+                        }
+                    }
+                }
+            }
+            return msArrNormalUser;
+            case NORMAL_ADMIN:{
+                if (msArrAdmin == null){
+                    synchronized(GrantedAuthorityImpl.class){
+                        if (msArrAdmin == null){
+                            msArrAdmin = new ArrayList<GrantedAuthorityImpl>();
+                            msArrAdmin.add(new GrantedAuthorityImpl(emType.toStrValue()));
+                        }
+                    }
+                }
+            }
+            return msArrAdmin;
+            default:
+                break;
+        }
+        return null;
+    }
+
+    public static LoginUserRoleType getRoleTypeByAuthority(List<GrantedAuthorityImpl> authorityList){
+        if (authorityList == msArrRootAdmin)
+            return LoginUserRoleType.ROOT_ADMIN;
+        else if (authorityList == msArrAdmin)
+            return LoginUserRoleType.NORMAL_ADMIN;
+        else if (authorityList == msArrNormalUser)
+            return LoginUserRoleType.USER;
+        else
+            return LoginUserRoleType.GUEST;
+    }
+}
+

+ 6 - 5
custom-gateway-core/src/main/java/com/shkpr/service/customgateway/core/utils/TokenAuthenticationService.java

@@ -3,10 +3,11 @@ package com.shkpr.service.customgateway.core.utils;
 import com.shkpr.service.customgateway.core.constants.ApiURI;
 import com.shkpr.service.customgateway.core.constants.CommDefine;
 import com.shkpr.service.customgateway.core.constants.ResponseCode;
-import com.shkpr.service.customgateway.core.dto.AuthTokenData;
+import com.shkpr.service.customgateway.core.domain.AuthTokenData;
 import com.shkpr.service.customgateway.core.exception.SelfAuthFilterException;
-import com.shkpr.service.customgateway.core.globalcache.GlobalData;
-import com.shkpr.service.customgateway.core.globalcache.UserCacheProxy;
+import com.shkpr.service.customgateway.core.filter.GrantedAuthorityImpl;
+import com.shkpr.service.customgateway.core.storage.GlobalData;
+import com.shkpr.service.customgateway.core.storage.UserStore;
 import io.jsonwebtoken.Claims;
 import io.jsonwebtoken.ExpiredJwtException;
 import io.jsonwebtoken.Jwts;
@@ -221,7 +222,7 @@ public class TokenAuthenticationService {
 
             boolean bEasy = true;
             if (bEasy && authData != null){
-                long lTimeLogout = UserCacheProxy.getInstance().getLogoutAccountTime(authData.getStrFlagKey());
+                long lTimeLogout = UserStore.getInstance().getLogoutAccountTime(authData.getStrFlagKey());
                 if (lTimeLogout == -1){
                     if (isTokenExpired(authData.getExpired()))
                         throw new CredentialsExpiredException("Invalidate token, token is expired.");
@@ -244,7 +245,7 @@ public class TokenAuthenticationService {
                 throw new BadCredentialsException("Invalidate Token, has no user.");
             }
         }else {
-            throw new SelfAuthFilterException(ResponseCode.STATUS_EMPTY_TOKEN.toInt(), ResponseCode.STATUS_EMPTY_TOKEN.toStrMsg());
+            throw new SelfAuthFilterException(ResponseCode.STATUS_EMPTY_TOKEN.getCode(), ResponseCode.STATUS_EMPTY_TOKEN.getMessage());
         }
     }
 

+ 3 - 1
custom-gateway-zydma/pom.xml

@@ -10,8 +10,10 @@
 
     <!--工件名-->
     <artifactId>custom-gateway-zydma</artifactId>
+    <!--版本号-->
+    <version>${project.version}</version>
     <!--打包方式-->
-    <packaging>jar</packaging>
+    <packaging>pom</packaging>
     <!--项目名-->
     <name>CustomGatewayZydma</name>
     <!--项目描述-->

+ 13 - 31
pom.xml

@@ -37,11 +37,12 @@
         <maven.compiler.target>1.8</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <project.version>1.0.0-dev</project.version>
         <java.version>1.8</java.version>
 
         <spring.boot.version>2.1.3.RELEASE</spring.boot.version>
         <gbase.version>1.0.5</gbase.version>
-        <jts.version>1.19.0</jts.version>
+        <jjwt.version>0.9.0</jjwt.version>
     </properties>
 
     <!--依赖项-->
@@ -68,36 +69,17 @@
         </dependency>
     </dependencies>
 
-    <!--构建脚本-->
-    <build>
-        <!-- 打成jar包的名称 -->
-        <finalName>v1-alam-biz-plugin-${version}</finalName>
-        <!--插件项-->
-        <plugins>
-            <!--maven-compiler-->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-            </plugin>
-            <!--spring-boot-->
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-
-    <!--仓库-->
-    <repositories>
-        <!--阿里中央-->
-        <repository>
-            <id>central</id>
-            <url>https://maven.aliyun.com/repository/central</url>
-            <releases>
-                <enabled>true</enabled>
-            </releases>
-        </repository>
-    </repositories>
+<!--    &lt;!&ndash;仓库&ndash;&gt;-->
+<!--    <repositories>-->
+<!--        &lt;!&ndash;阿里中央&ndash;&gt;-->
+<!--        <repository>-->
+<!--            <id>central</id>-->
+<!--            <url>https://maven.aliyun.com/repository/central</url>-->
+<!--            <releases>-->
+<!--                <enabled>true</enabled>-->
+<!--            </releases>-->
+<!--        </repository>-->
+<!--    </repositories>-->
 
     <!--依赖控制-->
     <dependencyManagement>