Jelajahi Sumber

苹果登录优化

fangqing 3 minggu lalu
induk
melakukan
787e9be8d3

+ 1 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java

@@ -122,7 +122,7 @@ public class SysLoginController {
 
         // 解码后的消息体
         JSONObject playloadObj = IOSToeknUtils.parserIdentityToken(identityToken);
-        String appid = playloadObj.getString("email");
+        String appid = playloadObj.getString("sub");
         System.out.println(appid);
 
         System.out.println(playloadObj);

+ 12 - 4
ruoyi-generator/src/main/java/com/ruoyi/generator/util/IOSToeknUtils.java

@@ -50,6 +50,7 @@ public class IOSToeknUtils {
         try {
             RestTemplate restTemplate = new RestTemplate();
             JSONObject data = restTemplate.getForObject(authUrl, JSONObject.class);
+            System.out.println(data);
             assert data != null;
             JSONArray jsonArray = data.getJSONArray("keys");
             for (Object obj : jsonArray) {
@@ -78,21 +79,28 @@ public class IOSToeknUtils {
         String kid = (String) jsonObject.get("kid");
         PublicKey publicKey = getPublicKey(kid);
 
+
         JwtParser jwtParser = Jwts.parser().setSigningKey(publicKey);
         jwtParser.requireIssuer(authIss);
         jwtParser.requireAudience((String) jsonObject.get("aud"));
         jwtParser.requireSubject((String) jsonObject.get("sub"));
+
         try {
+            System.out.println("Parsing JWT: " + identityToken); // 调试信息,查看 JWT
             Jws<Claims> claim = jwtParser.parseClaimsJws(identityToken);
-            if (claim != null && claim.getBody().containsKey("auth_time")) {
-                return true;
-            }
-            return false;
+            return claim != null && claim.getBody().containsKey("auth_time");
         } catch (ExpiredJwtException e) {
+            System.out.println("JWT expired: " + identityToken);
             return false;
         } catch (Exception e) {
+            System.err.println("Error verifying JWT: " + e.getMessage());
+            e.printStackTrace();
             return false;
         }
     }
+
+
+
+
 }