05d9ef26b1
ci/woodpecker/tag/build Pipeline was successful
162 日志(8884 容器,v1.2.157)实证: 16:25:58 INFO 刷新cookie: 已用长期凭证续期成功 userId=1279 16:25:58 ERROR 获取表单失败 taskId=337 error="...cpdaily_cookie_expired" 续期报告成功,紧接着业务调用仍过期。 根因:refreshCookieByLongTermToken 判定成功的唯一标准是 「结果里存在 MOD_ 前缀的 cookie」。但续期走的 /imUserToken/getImUserToken 接口只校验 sessionToken 头, **不校验 CAS 会话是否有效**;当 CASTGC/sessionToken 本身已过期时, 它仍可能返回 errCode=0,并把 jar 里那批无效 cookie 全数带回。 于是本次续期「成功」,调用方立刻重试又过期,用户只看到内部错误码。 改动: - 新增 cpd.VerifyCookieUsable:用业务同款最小请求(拉当天任务列表) 做只读探测。三种任务类型任一能正常返回即视为有效;返回 ErrCookieExpired 才判定凭证不可用;网络等其它错误不归咎于凭证。 该探测无任何写副作用。 - refreshCookieByLongTermToken 在回写 cookie 前先跑校验, 不通过则按续期失败返回,让上层走「请重新登录」引导, 而不是发出一轮注定失败的重试。 配合上一提交(07cf121)的两处升级与 userFacingError 兜底, 现在链路上任一环节的登录态失效都会转成明确的重登引导, 不再把 cpdaily_cookie_expired 暴露给用户。