车间能级提升-智能设备管理系统
zhuguifei
2025-04-08 3baaad59171ded6aca17340fcc907acbeeb45b7b
eims/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
@@ -6,6 +6,8 @@
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Opt;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.baomidou.lock.annotation.Lock4j;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -48,6 +50,12 @@
@Slf4j
@Service
public class SysLoginService {
    @Value("${justauth.type.keycloak.server-url}")
    private String keycloakServerUrl;
    @Value("${justauth.type.keycloak.realm}")
    private String keycloakRealm;
    @Value("${user.password.maxRetryCount}")
    private Integer maxRetryCount;
@@ -116,6 +124,27 @@
                TenantHelper.clearDynamic();
            }
            recordLogininfor(loginUser.getTenantId(), loginUser.getUsername(), Constants.LOGOUT, MessageUtils.message("user.logout.success"));
            // 新增Keycloak登出逻辑
            Long userId = loginUser.getUserId();
            SysSocialVo social = sysSocialService.selectByUserId(userId);
            if (social == null) {
                return;
            }
            String logoutUrl = keycloakServerUrl + "/realms/" + keycloakRealm + "/protocol/openid-connect/logout";
            HttpRequest request = HttpRequest.get(logoutUrl)
                .form("refresh_token", social.getRefreshToken())
                .form("id_token_hint", social.getIdToken());
            HttpResponse response = request.execute();
            if (response.isOk()) {
                System.out.println("1234");
            }
        } catch (NotLoginException ignored) {
        } finally {
            try {