fix: explicitly use new token when retrying ssePost after refresh (#10864)
Co-authored-by: liusurong.lsr <liusurong.lsr@alibaba-inc.com>
This commit is contained in:
parent
4d6b45427c
commit
d6ea1e2f12
@ -124,6 +124,24 @@ function requiredWebSSOLogin() {
|
|||||||
globalThis.location.href = `/webapp-signin?redirect_url=${globalThis.location.pathname}`
|
globalThis.location.href = `/webapp-signin?redirect_url=${globalThis.location.pathname}`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getAccessToken(isPublicAPI?: boolean) {
|
||||||
|
if (isPublicAPI) {
|
||||||
|
const sharedToken = globalThis.location.pathname.split('/').slice(-1)[0]
|
||||||
|
const accessToken = localStorage.getItem('token') || JSON.stringify({ [sharedToken]: '' })
|
||||||
|
let accessTokenJson = { [sharedToken]: '' }
|
||||||
|
try {
|
||||||
|
accessTokenJson = JSON.parse(accessToken)
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
return accessTokenJson[sharedToken]
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return localStorage.getItem('console_token') || ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function format(text: string) {
|
export function format(text: string) {
|
||||||
let res = text.trim()
|
let res = text.trim()
|
||||||
if (res.startsWith('\n'))
|
if (res.startsWith('\n'))
|
||||||
@ -295,22 +313,8 @@ const baseFetch = <T>(
|
|||||||
getAbortController(abortController)
|
getAbortController(abortController)
|
||||||
options.signal = abortController.signal
|
options.signal = abortController.signal
|
||||||
}
|
}
|
||||||
if (isPublicAPI) {
|
const accessToken = getAccessToken(isPublicAPI)
|
||||||
const sharedToken = globalThis.location.pathname.split('/').slice(-1)[0]
|
options.headers.set('Authorization', `Bearer ${accessToken}`)
|
||||||
const accessToken = localStorage.getItem('token') || JSON.stringify({ [sharedToken]: '' })
|
|
||||||
let accessTokenJson = { [sharedToken]: '' }
|
|
||||||
try {
|
|
||||||
accessTokenJson = JSON.parse(accessToken)
|
|
||||||
}
|
|
||||||
catch (e) {
|
|
||||||
|
|
||||||
}
|
|
||||||
options.headers.set('Authorization', `Bearer ${accessTokenJson[sharedToken]}`)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
const accessToken = localStorage.getItem('console_token') || ''
|
|
||||||
options.headers.set('Authorization', `Bearer ${accessToken}`)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (deleteContentType) {
|
if (deleteContentType) {
|
||||||
options.headers.delete('Content-Type')
|
options.headers.delete('Content-Type')
|
||||||
@ -403,23 +407,7 @@ const baseFetch = <T>(
|
|||||||
|
|
||||||
export const upload = (options: any, isPublicAPI?: boolean, url?: string, searchParams?: string): Promise<any> => {
|
export const upload = (options: any, isPublicAPI?: boolean, url?: string, searchParams?: string): Promise<any> => {
|
||||||
const urlPrefix = isPublicAPI ? PUBLIC_API_PREFIX : API_PREFIX
|
const urlPrefix = isPublicAPI ? PUBLIC_API_PREFIX : API_PREFIX
|
||||||
let token = ''
|
const token = getAccessToken(isPublicAPI)
|
||||||
if (isPublicAPI) {
|
|
||||||
const sharedToken = globalThis.location.pathname.split('/').slice(-1)[0]
|
|
||||||
const accessToken = localStorage.getItem('token') || JSON.stringify({ [sharedToken]: '' })
|
|
||||||
let accessTokenJson = { [sharedToken]: '' }
|
|
||||||
try {
|
|
||||||
accessTokenJson = JSON.parse(accessToken)
|
|
||||||
}
|
|
||||||
catch (e) {
|
|
||||||
|
|
||||||
}
|
|
||||||
token = accessTokenJson[sharedToken]
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
const accessToken = localStorage.getItem('console_token') || ''
|
|
||||||
token = accessToken
|
|
||||||
}
|
|
||||||
const defaultOptions = {
|
const defaultOptions = {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
url: (url ? `${urlPrefix}${url}` : `${urlPrefix}/files/upload`) + (searchParams || ''),
|
url: (url ? `${urlPrefix}${url}` : `${urlPrefix}/files/upload`) + (searchParams || ''),
|
||||||
@ -505,6 +493,9 @@ export const ssePost = (
|
|||||||
if (body)
|
if (body)
|
||||||
options.body = JSON.stringify(body)
|
options.body = JSON.stringify(body)
|
||||||
|
|
||||||
|
const accessToken = getAccessToken(isPublicAPI)
|
||||||
|
options.headers.set('Authorization', `Bearer ${accessToken}`)
|
||||||
|
|
||||||
globalThis.fetch(urlWithPrefix, options as RequestInit)
|
globalThis.fetch(urlWithPrefix, options as RequestInit)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
if (!/^(2|3)\d{2}$/.test(String(res.status))) {
|
if (!/^(2|3)\d{2}$/.test(String(res.status))) {
|
||||||
|
Loading…
Reference in New Issue
Block a user