diff --git a/intc-admin/src/main/java/com/intc/web/service/impl/WechatAuthStrategy.java b/intc-admin/src/main/java/com/intc/web/service/impl/WechatAuthStrategy.java index aebdf47..e2cef45 100644 --- a/intc-admin/src/main/java/com/intc/web/service/impl/WechatAuthStrategy.java +++ b/intc-admin/src/main/java/com/intc/web/service/impl/WechatAuthStrategy.java @@ -93,12 +93,31 @@ public class WechatAuthStrategy implements IAuthStrategy { loginUser.setDeviceType(client.getDeviceType()); // 4. 配置登录参数 + // 微信小程序用户:设置更长的 token 有效期,避免频繁过期重新登录 + // - timeout: token 绝对有效期(默认30天) + // - activeTimeout: 活跃超时时间(默认7天),用户7天不活跃才过期 + // 优先使用 client 配置的值,如果配置不合理(太短)则使用默认的长效配置 SaLoginParameter model = new SaLoginParameter(); model.setDeviceType(client.getDeviceType()); - model.setTimeout(client.getTimeout()); - model.setActiveTimeout(client.getActiveTimeout()); + // 微信小程序默认配置:绝对有效期30天(2592000秒),活跃超时7天(604800秒) + long defaultTimeout = 2592000L; // 30天 + long defaultActiveTimeout = 604800L; // 7天 + // 如果 client 配置的超时时间太短(小于1天),使用默认的长效配置 + Long timeout = client.getTimeout(); + Long activeTimeout = client.getActiveTimeout(); + if (timeout == null || timeout < 86400) { // 小于1天(86400秒) + timeout = defaultTimeout; + } + if (activeTimeout == null || activeTimeout < 86400) { // 小于1天 + activeTimeout = defaultActiveTimeout; + } + model.setTimeout(timeout); + model.setActiveTimeout(activeTimeout); model.setExtra(LoginHelper.CLIENT_KEY, client.getClientId()); + log.info("微信登录token配置: clientId={}, timeout={}秒({}天), activeTimeout={}秒({}天)", + client.getClientId(), timeout, timeout / 86400, activeTimeout, activeTimeout / 86400); + // 5. 执行登录,生成 token LoginHelper.login(loginUser, model);