mirror of
https://gitee.com/lijingbo-2021/open-anylink-web.git
synced 2025-12-30 02:52:26 +00:00
增加刷新token的流程
This commit is contained in:
16
src/api/common.js
Normal file
16
src/api/common.js
Normal file
@@ -0,0 +1,16 @@
|
||||
import request from '@/utils/request'
|
||||
import { CLIENT_TYPE, CLIENT_NAME, CLIENT_VERSION } from '@/const/userConst'
|
||||
import { userStore } from '@/stores'
|
||||
|
||||
export const refreshToken = async () => {
|
||||
const userData = userStore()
|
||||
const now = new Date().getTime()
|
||||
if (now > userData.at.expiretime && now <= userData.rt.expiretime) {
|
||||
const res = await request.post('/user/refreshToken', {
|
||||
clientType: CLIENT_TYPE,
|
||||
clientName: CLIENT_NAME,
|
||||
clientVersion: CLIENT_VERSION
|
||||
})
|
||||
userData.setAt(res.data.data.accessToken)
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
import request from '@/utils/request'
|
||||
import { CLIENT_TYPE, CLIENT_NAME, CLIENT_VERSION, CLIENT_ID } from '@/const/userConst'
|
||||
import { refreshToken } from '@/api/common'
|
||||
|
||||
export const userRegisterService = ({ username, password }) => {
|
||||
return request.post('/user/register', {
|
||||
@@ -23,7 +24,8 @@ export const userLoginService = ({ username, password }) => {
|
||||
})
|
||||
}
|
||||
|
||||
export const userInfoService = () => {
|
||||
export const userInfoService = async () => {
|
||||
await refreshToken()
|
||||
return request.post('/user/querySelf', {
|
||||
clientType: CLIENT_TYPE,
|
||||
clientName: CLIENT_NAME,
|
||||
|
||||
@@ -10,19 +10,19 @@ export const userStore = defineStore(
|
||||
const at = ref({
|
||||
token: '',
|
||||
secret: '',
|
||||
expiretime: null
|
||||
expiretime: 0
|
||||
})
|
||||
const rt = ref({
|
||||
token: '',
|
||||
secret: '',
|
||||
expiretime: null
|
||||
expiretime: 0
|
||||
})
|
||||
const setAt = (newAt) => {
|
||||
const now = new Date()
|
||||
at.value = {
|
||||
token: newAt.token,
|
||||
secret: newAt.secret,
|
||||
expiretime: new Date(now.getTime() + newAt.expire * 1000)
|
||||
expiretime: now.getTime() + newAt.expire * 1000
|
||||
}
|
||||
}
|
||||
const setRt = (newRt) => {
|
||||
@@ -30,21 +30,21 @@ export const userStore = defineStore(
|
||||
rt.value = {
|
||||
token: newRt.token,
|
||||
secret: newRt.secret,
|
||||
expiretime: new Date(now.getTime() + newRt.expire * 1000)
|
||||
expiretime: now.getTime() + newRt.expire * 1000
|
||||
}
|
||||
}
|
||||
const clearAt = () => {
|
||||
at.value = {
|
||||
token: '',
|
||||
secret: '',
|
||||
expiretime: null
|
||||
expiretime: 0
|
||||
}
|
||||
}
|
||||
const clearRt = () => {
|
||||
rt.value = {
|
||||
token: '',
|
||||
secret: '',
|
||||
expiretime: null
|
||||
expiretime: 0
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,15 @@ const generateSign = (key, content) => {
|
||||
instance.interceptors.request.use(
|
||||
(config) => {
|
||||
const userData = userStore()
|
||||
if (userData.at) {
|
||||
if (config.url === '/user/refreshToken' && userData.rt.token !== '') {
|
||||
const traceId = uuidv4()
|
||||
const timestamp = Math.floor(new Date().getTime() / 1000)
|
||||
const sigh = generateSign(userData.rt.secret, `${traceId}${timestamp}`)
|
||||
config.headers.traceId = traceId
|
||||
config.headers.timestamp = timestamp
|
||||
config.headers.sign = sigh
|
||||
config.headers.refreshToken = userData.rt.token
|
||||
} else if (userData.at.token !== '') {
|
||||
const traceId = uuidv4()
|
||||
const timestamp = Math.floor(new Date().getTime() / 1000)
|
||||
const sigh = generateSign(userData.at.secret, `${traceId}${timestamp}`)
|
||||
|
||||
Reference in New Issue
Block a user