diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/user/model/ConnectionAuthToken.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/user/model/ConnectionAuthToken.java index fb0dc8325..7e16f0f1b 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/user/model/ConnectionAuthToken.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/user/model/ConnectionAuthToken.java @@ -30,11 +30,22 @@ public boolean isRefreshTokenExpired() { } public static ConnectionAuthToken of(AuthToken token) { + + Long accessTokenExpiry = 0L; + if(token.getExpireIn() != 0) { + accessTokenExpiry = System.currentTimeMillis() / 1000 + token.getExpireIn() - 60; + } + + Long refreshTokenExpiry = 0L; + if(token.getRefreshTokenExpireIn() != 0) { + refreshTokenExpiry = System.currentTimeMillis() / 1000 + token.getRefreshTokenExpireIn() - 60; + } + return ConnectionAuthToken.builder() .accessToken(token.getAccessToken()) - .expireAt(System.currentTimeMillis() / 1000 + token.getExpireIn() - 60) + .expireAt(accessTokenExpiry) .refreshToken(token.getRefreshToken()) - .refreshTokenExpireAt(System.currentTimeMillis() / 1000 + token.getRefreshTokenExpireIn() - 60) + .refreshTokenExpireAt(refreshTokenExpiry) .source(null) .build(); } diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/framework/filter/UserSessionPersistenceFilter.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/framework/filter/UserSessionPersistenceFilter.java index 77d28486f..a5f40d45f 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/framework/filter/UserSessionPersistenceFilter.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/framework/filter/UserSessionPersistenceFilter.java @@ -59,6 +59,9 @@ public Mono filter(@Nonnull ServerWebExchange exchange, WebFilterChain cha user.getConnections().forEach(connection -> { if(!connection.getAuthId().equals(DEFAULT_AUTH_CONFIG.getId())) { Instant next5Minutes = Instant.now().plusSeconds( 300 ); + if(connection.getAuthConnectionAuthToken().getExpireAt() == 0) { + return; + } boolean isAccessTokenExpiryNear = (connection.getAuthConnectionAuthToken().getExpireAt()*1000) <= next5Minutes.toEpochMilli(); if(isAccessTokenExpiryNear) { connection.getOrgIds().forEach(orgId -> {