You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.3 KiB
37 lines
1.3 KiB
import { computed } from 'vue';
|
|
import { useStore } from 'vuex';
|
|
|
|
/**
|
|
* 初始化
|
|
* token 及 userId处理:
|
|
* 1.1 store里有token 且没过期直接:使用store的token √
|
|
* 1.2 store里的token不可用 查localStorage
|
|
* 因为一开始就将local的数据同步到了store里所以不用管local的数据了
|
|
* 2. store里token不可用 查userId 通过store里的userId获取token
|
|
* url 与 local的userId 一开始就同步到了store里所以不用考虑
|
|
* @param {object | null} options
|
|
*/
|
|
export default async function useGetToken() {
|
|
const store = useStore();
|
|
const token = computed(() => store.state.user.token);
|
|
const tokenIsAvailable = computed(() => store.getters['user/tokenIsAvailable']); // token是否可用
|
|
const userId = computed(() => store.getters['user/userId']);
|
|
debugger;
|
|
if (token.value && tokenIsAvailable.value) {
|
|
// 1.1 store里有token 且没过期直接:使用store的token
|
|
return token.value;
|
|
} else {
|
|
// 2. 根据userId获取token
|
|
if (userId.value) {
|
|
try {
|
|
const { token } = await store.dispatch('user/getTokenByUserId', userId.value);
|
|
return token;
|
|
} catch (error) {
|
|
console.error('error: ', error);
|
|
return null;
|
|
}
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
|