huangxiao пре 3 недеља
родитељ
комит
ed3eb32daa

+ 30 - 0
pom.xml

@@ -10,7 +10,9 @@
     <description>网关模板</description>
 
     <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <hosea-cloud.version>1.0.0</hosea-cloud.version>
+        <service-user-client.version>1.0.0</service-user-client.version>
     </properties>
 
     <dependencies>
@@ -19,6 +21,34 @@
             <artifactId>cloud-gateway-maxkey</artifactId>
             <version>${hosea-cloud.version}</version>
         </dependency>
+        <dependency>
+            <groupId>com.hosea.cloud.user</groupId>
+            <artifactId>service-user-client</artifactId>
+            <version>${service-user-client.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.hosea.cloud</groupId>
+                    <artifactId>cloud-webmvc</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
     </dependencies>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>17</source>
+                    <target>17</target>
+                    <encoding>${project.build.sourceEncoding}</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
 </project>

+ 63 - 0
src/main/java/com/hosea/gateway/login/MaxKeyLoginHandleImpl.java

@@ -0,0 +1,63 @@
+package com.hosea.gateway.login;
+
+import cn.hutool.core.lang.TypeReference;
+import cn.hutool.http.HttpResponse;
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.cola.dto.SingleResponse;
+import com.alibaba.cola.exception.BizException;
+import com.hosea.cloud.gateway.constant.LoginErrorCode;
+import com.hosea.cloud.gateway.maxkey.MaxKeyLoginHandle;
+import com.hosea.cloud.web.constant.CommonConstant;
+import com.hosea.cloud.web.login.JwtToken;
+import com.hosea.cloud.web.login.JwtTokenTenant;
+import com.hosea.service.user.client.dto.response.UserInfoResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.lang.reflect.Type;
+import java.util.Collection;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+/**
+ * MaxKey的登录处理
+ *
+ * @author hosea
+ * @date 2025-07-07
+ */
+@Slf4j
+@Component("maxkey")
+public class MaxKeyLoginHandleImpl extends MaxKeyLoginHandle {
+    @Override
+    public JwtToken queryUserServiceGetUserInfo(String user) {
+        // 请求用户服务的接口,得到用户信息,由于下游服务都不用验签,所以jwt密码随便,非空就行
+        try (HttpResponse response = HttpUtil.createGet(getExtension().getUserServiceUrl()).header(CommonConstant.REQUEST_HEADER_AUTH, JwtToken.builder().user(user).build().jwt("xxx")).execute()) {
+            SingleResponse<UserInfoResponse> userInfo = JSONUtil.toBean(response.body(), new TypeReference<SingleResponse<UserInfoResponse>>() {
+                @Override
+                public Type getType() {
+                    return super.getType();
+                }
+            }, true);
+            if (!userInfo.isSuccess()) {
+                throw new BizException(userInfo.getErrCode(), userInfo.getErrMessage());
+            }
+            return JwtToken.builder()
+                    .user(user)
+                    .name(userInfo.getData().getUser().getNickName())
+                    .tenants(Optional.ofNullable(userInfo.getData().getTenants())
+                            .stream()
+                            .flatMap(Collection::stream)
+                            .map(row -> JwtTokenTenant.builder()
+                                    .id(row.getId())
+                                    .code(row.getCode())
+                                    .name(row.getName())
+                                    .build())
+                            .collect(Collectors.toList()))
+                    .build();
+        } catch (Exception e) {
+            log.error("Query Error User:{}", user, e);
+            throw LoginErrorCode.USER_INFO.toBizException();
+        }
+    }
+}

+ 6 - 7
src/main/resources/application.yml

@@ -25,15 +25,14 @@ gateway:
         # jwt签名的密码
         jwt-signer-password: sewlgioh4578ewrwe7rw68e7r
       # 本地端的地址
-      local-url:
-        host: http://127.0.0.1:${server.port}
-        # 监听登录回调的接口地址
-        login-call-back: /ss/aa
+      local-url.host: http://127.0.0.1:${server.port}
       # 服务端的地址
-      service-url.host: http://127.0.0.1
+      service-url.host: http://8.138.103.145:8080
+      # 用户服务里,获得用户信息的接口地址
+      extension.user_service_url: http://127.0.0.1:10001/user
       registration:
-        client-id: 1138207703596793856
-        client-secret: 8weDMDMwNzIwMjUxNzUyMDkwNDU9rT
+        client-id: 1153405707173756928
+        client-secret: WpIkMTQwODIwMjUxNjIzMzU0NjMSIl
 
 spring:
   cloud: