login
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
import axios from 'axios'
|
||||
|
||||
let csrfToken = ''
|
||||
let csrfTokenPromise = null
|
||||
|
||||
export function setCsrfToken(token) {
|
||||
csrfToken = token || ''
|
||||
}
|
||||
|
||||
export function getCsrfToken() {
|
||||
return csrfToken
|
||||
}
|
||||
|
||||
// 登录成功或应用初始化后拉取当前会话的 CSRF token。
|
||||
export async function fetchCsrfToken(forceRefresh = false) {
|
||||
if (!forceRefresh && csrfToken) {
|
||||
return csrfToken
|
||||
}
|
||||
|
||||
if (csrfTokenPromise) {
|
||||
return csrfTokenPromise
|
||||
}
|
||||
|
||||
csrfTokenPromise = axios.get('/shop/passport/csrfToken')
|
||||
.then((res) => {
|
||||
const token = res && res.code === 1 && res.data ? res.data.token : ''
|
||||
|
||||
if (!token) {
|
||||
throw new Error('CSRF Token 获取失败')
|
||||
}
|
||||
|
||||
setCsrfToken(token)
|
||||
return token
|
||||
})
|
||||
.finally(() => {
|
||||
csrfTokenPromise = null
|
||||
})
|
||||
|
||||
return csrfTokenPromise
|
||||
}
|
||||
Reference in New Issue
Block a user