From 6d2cc6e87d609589a23ea8e95331bb64a1a9a88c Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期五, 21 六月 2024 14:59:50 +0800 Subject: [PATCH] update 优化 替换过期方法 --- ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java | 29 ++++++++++++++++++++++------- 1 files changed, 22 insertions(+), 7 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 79cd574..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; @@ -16,15 +17,17 @@ import org.dromara.common.core.domain.model.RegisterBody; import org.dromara.common.core.domain.model.SocialLoginBody; import org.dromara.common.core.utils.*; +import org.dromara.common.encrypt.annotation.ApiEncrypt; import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.social.config.properties.SocialLoginConfigProperties; import org.dromara.common.social.config.properties.SocialProperties; import org.dromara.common.social.utils.SocialUtils; import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.common.websocket.dto.WebSocketMessageDto; import org.dromara.common.websocket.utils.WebSocketUtils; -import org.dromara.system.domain.SysClient; import org.dromara.system.domain.bo.SysTenantBo; +import org.dromara.system.domain.vo.SysClientVo; import org.dromara.system.domain.vo.SysTenantVo; import org.dromara.system.service.ISysClientService; import org.dromara.system.service.ISysConfigService; @@ -40,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; @@ -51,7 +57,6 @@ */ @Slf4j @SaIgnore -@Validated @RequiredArgsConstructor @RestController @RequestMapping("/auth") @@ -73,14 +78,15 @@ * @param body 鐧诲綍淇℃伅 * @return 缁撴灉 */ + @ApiEncrypt @PostMapping("/login") - public R<LoginVo> login(@Validated @RequestBody String body) { + public R<LoginVo> login(@RequestBody String body) { LoginBody loginBody = JsonUtils.parseObject(body, LoginBody.class); ValidatorUtils.validate(loginBody); // 鎺堟潈绫诲瀷鍜屽鎴风id String clientId = loginBody.getClientId(); String grantType = loginBody.getGrantType(); - SysClient client = clientService.queryByClientId(clientId); + SysClientVo client = clientService.queryByClientId(clientId); // 鏌ヨ涓嶅埌 client 鎴� client 鍐呬笉鍖呭惈 grantType if (ObjectUtil.isNull(client) || !StringUtils.contains(client.getGrantType(), grantType)) { log.info("瀹㈡埛绔痠d: {} 璁よ瘉绫诲瀷锛歿} 寮傚父!.", clientId, grantType); @@ -95,7 +101,10 @@ Long userId = LoginHelper.getUserId(); scheduledExecutorService.schedule(() -> { - WebSocketUtils.sendMessage(userId, "娆㈣繋鐧诲綍RuoYi-Vue-Plus鍚庡彴绠$悊绯荤粺"); + WebSocketMessageDto dto = new WebSocketMessageDto(); + dto.setMessage("娆㈣繋鐧诲綍RuoYi-Vue-Plus鍚庡彴绠$悊绯荤粺"); + dto.setSessionKeys(List.of(userId)); + WebSocketUtils.publishMessage(dto); }, 3, TimeUnit.SECONDS); return R.ok(loginVo); } @@ -107,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); } @@ -163,6 +177,7 @@ /** * 鐢ㄦ埛娉ㄥ唽 */ + @ApiEncrypt @PostMapping("/register") public R<Void> register(@Validated @RequestBody RegisterBody user) { if (!configService.selectRegisterEnabled(user.getTenantId())) { -- Gitblit v1.9.3