From 7c82b4c370aa63c630e7b0cbbef5d2757d46089d Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期三, 19 六月 2024 14:29:32 +0800 Subject: [PATCH] update 优化 三方登录不同域名问题 采用新方案 --- ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java | 29 ++++++++++++++--------------- 1 files changed, 14 insertions(+), 15 deletions(-) diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java index 8b83e29..d99af5b 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java @@ -1,6 +1,7 @@ package org.dromara.web.controller; import cn.dev33.satoken.annotation.SaIgnore; +import cn.hutool.core.codec.Base64; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import jakarta.servlet.http.HttpServletRequest; @@ -42,7 +43,10 @@ import org.springframework.web.bind.annotation.*; import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -91,7 +95,7 @@ return R.fail(MessageUtils.message("auth.grant.type.blocked")); } // 鏍¢獙绉熸埛 - SysTenantVo tenant = loginService.checkTenant(loginBody.getTenantId()); + loginService.checkTenant(loginBody.getTenantId()); // 鐧诲綍 LoginVo loginVo = IAuthStrategy.login(body, client, grantType); @@ -102,10 +106,6 @@ dto.setSessionKeys(List.of(userId)); WebSocketUtils.publishMessage(dto); }, 3, TimeUnit.SECONDS); - - if (StringUtils.isNotBlank(tenant.getTenantId())) { - loginVo.setDomain(tenant.getDomain()); - } return R.ok(loginVo); } @@ -116,13 +116,18 @@ * @return 缁撴灉 */ @GetMapping("/binding/{source}") - public R<String> authBinding(@PathVariable("source") String source) { + public R<String> authBinding(@PathVariable("source") String source, + @RequestParam String tenantId, @RequestParam String domain) { SocialLoginConfigProperties obj = socialProperties.getType().get(source); if (ObjectUtil.isNull(obj)) { return R.fail(source + "骞冲彴璐﹀彿鏆備笉鏀寔"); } AuthRequest authRequest = SocialUtils.getAuthRequest(source, socialProperties); - String authorizeUrl = authRequest.authorize(AuthStateUtils.createState()); + Map<String, String> map = new HashMap<>(); + map.put("tenantId", tenantId); + map.put("domain", domain); + map.put("state", AuthStateUtils.createState()); + String authorizeUrl = authRequest.authorize(Base64.encode(JsonUtils.toJsonString(map), StandardCharsets.UTF_8)); return R.ok("鎿嶄綔鎴愬姛", authorizeUrl); } @@ -133,7 +138,7 @@ * @return 缁撴灉 */ @PostMapping("/social/callback") - public R<LoginVo> socialCallback(@RequestBody SocialLoginBody loginBody) { + public R<Void> socialCallback(@RequestBody SocialLoginBody loginBody) { // 鑾峰彇绗笁鏂圭櫥褰曚俊鎭� AuthResponse<AuthUser> response = SocialUtils.loginAuth( loginBody.getSource(), loginBody.getSocialCode(), @@ -144,13 +149,7 @@ return R.fail(response.getMsg()); } loginService.socialRegister(authUserData); - - LoginVo loginVo = new LoginVo(); - SysTenantVo tenant = tenantService.queryByTenantId(LoginHelper.getTenantId()); - if (StringUtils.isNotBlank(tenant.getTenantId())) { - loginVo.setDomain(tenant.getDomain()); - } - return R.ok(loginVo); + return R.ok(); } -- Gitblit v1.9.3