Browse Source

系统切换

Wayne 4 months ago
parent
commit
ddc0c18459

+ 13 - 0
projects/src/main/java/com/rtrh/projects/web/controller/passport/SwitchController.java

@@ -0,0 +1,13 @@
+package com.rtrh.projects.web.controller.passport;
+
+import com.rtrh.projects.web.controller.BaseController;
+import org.springframework.stereotype.Controller;
+
+/**
+ * 切换系统
+ * @author PENG
+ *
+ */
+@Controller
+public class SwitchController extends BaseController {
+}

+ 34 - 0
projects/src/main/java/com/rtrh/projects/web/controller/passport/api/SwitchApiController.java

@@ -0,0 +1,34 @@
+package com.rtrh.projects.web.controller.passport.api;
+
+import com.rtrh.projects.web.controller.BaseController;
+import com.rtrh.projects.web.util.JwtUtil;
+import com.team.security.TeamShiroUser;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+
+@RestController
+@RequestMapping("/switch")
+public class SwitchApiController extends BaseController {
+
+    /**
+     * 切换到发改委系统
+     * @param request
+     * @return
+     */
+    @GetMapping("/toFgw")
+    public String switchToFgw(HttpServletRequest request) {
+
+        //获取当前用户信息
+        TeamShiroUser curUser = getCurUser();
+        //使用jwt生成token
+        String token = JwtUtil.generateToken(curUser.getLoginName());
+
+        // 拼接 B 系统的 URL
+        String targetUrl = "http://localhost:8090/projects/api/login?token=" + token;
+        return "redirect:" + targetUrl;
+    }
+
+}

+ 26 - 0
projects/src/main/java/com/rtrh/projects/web/util/JwtUtil.java

@@ -0,0 +1,26 @@
+package com.rtrh.projects.web.util;
+
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.SignatureAlgorithm;
+import java.util.Date;
+
+public class JwtUtil {
+    private static final String SECRET_KEY = "yourSecretKey";
+
+    public static String generateToken(String username) {
+        return Jwts.builder()
+                .setSubject(username)
+                .setIssuedAt(new Date())
+                .setExpiration(new Date(System.currentTimeMillis() + 3600 * 1000)) // Token 有效期 1 小时
+                .signWith(SignatureAlgorithm.HS256, SECRET_KEY)
+                .compact();
+    }
+
+    public static String validateToken(String token) {
+        return Jwts.parser()
+                .setSigningKey(SECRET_KEY)
+                .parseClaimsJws(token)
+                .getBody()
+                .getSubject();
+    }
+}