From 53672f15a604c8c960a7e298d2dc1221d4a3c602 Mon Sep 17 00:00:00 2001 From: guyue <1721849008@qq.com> Date: 星期五, 11 七月 2025 21:05:05 +0800 Subject: [PATCH] 队列一 --- src/main/java/com/linghu/controller/AuthController.java | 93 +++++++++++++++++++++++++++++++++------------- 1 files changed, 67 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/linghu/controller/AuthController.java b/src/main/java/com/linghu/controller/AuthController.java index cc8d706..6d7e0c4 100644 --- a/src/main/java/com/linghu/controller/AuthController.java +++ b/src/main/java/com/linghu/controller/AuthController.java @@ -2,14 +2,17 @@ import java.util.HashMap; import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.linghu.utils.OpenCryptUtil; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import com.linghu.model.entity.User; import com.linghu.utils.JwtUtils; @@ -24,29 +27,67 @@ @Value("${jwt.secret}") private String secretKey; - @PostMapping("/login") - @ApiOperation(value = "外部登录") - public ResponseEntity<?> externalLogin( - @RequestBody User user) { - - // 生成JWT令牌 - JwtUtils jwtUtils = new JwtUtils(secretKey, 3600); - String token = jwtUtils.generateToken(user); - - Map<String, String> response = new HashMap<>(); - response.put("token", token); - // 返回JWT令牌 - return ResponseEntity.ok(response); - } +// @PostMapping("/login") +// @ApiOperation(value = "外部登录") +// public ResponseEntity<?> externalLogin( +// @RequestBody User user) { +// +// // 生成JWT令牌 +// JwtUtils jwtUtils = new JwtUtils(secretKey, 3600); +// String token = jwtUtils.generateToken(user); +// +// Map<String, String> response = new HashMap<>(); +// response.put("token", token); +// // 返回JWT令牌 +// return ResponseEntity.ok(response); +// } // 获取用户信息 - @PostMapping("/getUserInfo") - @ApiOperation(value = "获取用户信息") - public ResponseEntity<?> getUserInfo(@RequestParam String token) { - // 解析JWT令牌,获取用户信息 - JwtUtils jwtUtils = new JwtUtils(secretKey, 3600); - User user = jwtUtils.parseToken(token); +// @PostMapping("/getUserInfo") +// @ApiOperation(value = "获取用户信息") +// public ResponseEntity<?> getUserInfo(@RequestParam String token) { +// // 解析JWT令牌,获取用户信息 +// JwtUtils jwtUtils = new JwtUtils(secretKey, 3600); +// User user = jwtUtils.parseToken(token); +// // 返回用户信息 +// return ResponseEntity.ok(user); +// } + //open-crypt解析token + @GetMapping("/parseToken") + @ApiOperation(value = "解析token") + public ResponseEntity<?> parseToken(@RequestParam String token) throws JsonProcessingException { + if (token == null || "".equals(token)){ + return ResponseEntity.ok("token为空"); + } + // 解析token,获取用户信息 + OpenCryptUtil openCryptUtil = new OpenCryptUtil(); + String decrypt = openCryptUtil.decrypt(token); + System.out.println(decrypt); + System.out.println("----------------"); + // 1. 去除外层多余的引号 + String jsonStr = decrypt.replaceAll("^\"|\"$", ""); + // 处理后:{"name":"ceshi"}(但实际可能仍包含转义字符) + + // 2. 处理剩余的转义字符(将 \" 转换为 ") + jsonStr = jsonStr.replace("\\\"", "\""); + + // 3. 解析 JSON + ObjectMapper objectMapper = new ObjectMapper(); + String name = objectMapper.readTree(jsonStr).get("name").asText(); + // 返回用户信息 - return ResponseEntity.ok(user); + return ResponseEntity.ok(name); + } + + @GetMapping("/getToken") + @ApiOperation(value = "获取token") + public ResponseEntity<?> getToken( String user) { + // 创建用户对 + + // 创建JwtUtils对象,并生成JWT令牌 + OpenCryptUtil openCryptUtil = new OpenCryptUtil(); + String decrypt = openCryptUtil.encrypt(user); + // 返回JWT令牌 + return ResponseEntity.ok(decrypt); } } \ No newline at end of file -- Gitblit v1.7.1