src/main/java/com/linghu/controller/AuthController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/linghu/model/dto/TokenRequest.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/linghu/utils/OpenCryptUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/linghu/controller/AuthController.java
@@ -1,21 +1,16 @@ package com.linghu.controller; 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.model.dto.TokenRequest; import com.linghu.utils.OpenCryptUtil; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import com.linghu.model.entity.User; import com.linghu.utils.JwtUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -53,9 +48,10 @@ // return ResponseEntity.ok(user); // } //open-crypt解析token @GetMapping("/parseToken") @PostMapping("/parseToken") @ApiOperation(value = "解析token") public ResponseEntity<?> parseToken(@RequestParam String token) { public ResponseEntity<?> parseToken(@RequestBody TokenRequest tokenRequest) { String token = tokenRequest.getToken(); if (token == null || token.isEmpty()) { return ResponseEntity.ok("token为空"); } src/main/java/com/linghu/model/dto/TokenRequest.java
New file @@ -0,0 +1,8 @@ package com.linghu.model.dto; import lombok.Data; @Data // Lombok 注解,自动生成 getter/setter public class TokenRequest { private String token; } src/main/java/com/linghu/utils/OpenCryptUtil.java
@@ -8,12 +8,13 @@ import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import java.nio.charset.StandardCharsets; @Component public class OpenCryptUtil { // 加密密钥(从配置文件读取,避免硬编码) @Value("${app.crypt.secret-key}") // 长度需符合算法要求(如AES-256需32位) @Value("${crypt.secret}") // 长度需符合算法要求(如AES-256需32位) private String secret; // 初始化向量(CBC模式需要,可选) @@ -34,8 +35,8 @@ try { // 调用 open-crypt 的加密方法(根据实际API调整) //user转为 json String json = JSON.toJSONString(user); return UserSign.gen(json, "fY9tX7vX7qH5bN2cD8eM4xD2fH7uL4xM".getBytes()); // String json = JSON.toJSONString(user); return UserSign.gen(user, "fY9tX7vX7qH5bN2cD8eM4xD2fH7uL4xM".getBytes(StandardCharsets.UTF_8)); } catch (Exception e) { throw new RuntimeException("加密失败:" + e.getMessage(), e); } @@ -47,7 +48,8 @@ public String decrypt(String token) { try { // 调用 open-crypt 的解密方法 return UserSign.decrypt(token, "fY9tX7vX7qH5bN2cD8eM4xD2fH7uL4xM".getBytes()); byte[] keyBytes = "fY9tX7vX7qH5bN2cD8eM4xD2fH7uL4xM".getBytes(StandardCharsets.UTF_8); return UserSign.decrypt(token, keyBytes); } catch (Exception e) { throw new RuntimeException("解密失败:" + e.getMessage(), e); }