Skip to content

Commit

Permalink
Merge pull request #53 from huixisheng/hotfix-QyJsTicketApi-cache-error
Browse files Browse the repository at this point in the history
fix: 修复 jssdkSignature 使用缓存的签名会失效
  • Loading branch information
Javen205 authored Apr 21, 2024
2 parents 810ecc3 + 9b1bdb2 commit 681f560
Showing 1 changed file with 25 additions and 6 deletions.
31 changes: 25 additions & 6 deletions packages/commons/src/api/QyJsTicketApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,18 @@ export class QyJsTicketApi {
// 从缓存中获取
let cache: ICache = QyApiConfigKit.getCache
let jsTicketJson: string = await cache.get(key)
if (jsTicketJson) {
const jsTicketInstance = new JsTicket(jsTicketJson)
if (QyApiConfigKit.isDevMode()) {
if (this.isAvailable(jsTicketJson)) {
if (QyApiConfigKit.isDevMode) {
console.debug('缓存中获取api_ticket...')
}
if (jsTicketInstance.isAvailable()) {
return jsTicketInstance
}
return new JsTicket(jsTicketJson)
}

// 缓存存在且过期做清除处理
if (jsTicketJson) {
cache.remove(key)
}

// 通过接口获取
let accessToken: AccessToken = await QyAccessTokenApi.getAccessToken()
let url: string
Expand All @@ -58,4 +61,20 @@ export class QyJsTicketApi {
return jsTicket
}
}
/**
* 检测jsTicket是否有效
* @param jsTicketJson
*/
public static isAvailable (jsTicketJson: string): boolean {
try {
const ticket = JSON.parse(jsTicketJson)
if (!ticket.expired_time) return false
if (ticket.errcode) return false
if (ticket.expired_time < new Date().getTime()) return false
return ticket.access_token != null
} catch (e) {
// 处理 jsTicketJson = '' 或其他非法情况
return false
}
}
}

0 comments on commit 681f560

Please sign in to comment.