Update token handling and user state management

This commit is contained in:
wangqiao
2025-08-25 22:51:06 +08:00
parent 63fa551041
commit 7291768b03
5 changed files with 41 additions and 3 deletions

View File

@ -90,7 +90,10 @@
import { handleLoginQQ, handleLoginWechat } from '~/utils/login' import { handleLoginQQ, handleLoginWechat } from '~/utils/login'
import useUserStore from '~/store/user' import useUserStore from '~/store/user'
const app = useNuxtApp() const app = useNuxtApp()
const token = useToken();
const userStore = useUserStore() const userStore = useUserStore()
const tokenCookie = useCookie<string | undefined>('token');
const props = defineProps({ const props = defineProps({
visible: { visible: {
@ -210,6 +213,10 @@
const res = await login(loginForm) const res = await login(loginForm)
const { code, data, msg } = res const { code, data, msg } = res
if (code !== 0) return ElMessage.error(msg) if (code !== 0) return ElMessage.error(msg)
// 设置cookie
tokenCookie.value = data.accessToken;
// 更新state
token.value = data.accessToken;
REFRESHTOKEN.setToken(data.accessToken, data.refreshToken) REFRESHTOKEN.setToken(data.accessToken, data.refreshToken)
REFRESHTOKEN.setUserId(data.userId.toString()) REFRESHTOKEN.setUserId(data.userId.toString())
REFRESHTOKEN.setUserName(loginForm.mobile) REFRESHTOKEN.setUserName(loginForm.mobile)

View File

@ -2,7 +2,26 @@
export const useToken = () => export const useToken = () =>
useState<string>('token', () => { useState<string>('token', () => {
const token = useCookie<string | undefined>('token'); const token = useCookie<string | undefined>('token');
return token.value ? 'Bearer ' + token.value : ''; return token.value ? token.value : '';
});
type UserInfo = {
nickname: string,
avatar: string,
mobile: string,
id: number | undefined,
vipLevel: number | undefined,
sex: number | undefined,
}
export const useUserInfo = () => useState<UserInfo>('userInfo', () => {
return {
nickname: '',
avatar: '',
mobile: '',
id: undefined,
vipLevel: undefined,
sex: undefined,
}
}); });
/** 热门数据 */ /** 热门数据 */

View File

@ -6,7 +6,8 @@ const useServerRequest = async <T>(
url: string, url: string,
opts?: UseFetchOptions<T, unknown> opts?: UseFetchOptions<T, unknown>
) => { ) => {
const token = useCookie<string | undefined>("token"); const token = useToken();
const user = useUserInfo();
const runtimeConfig = useRuntimeConfig(); const runtimeConfig = useRuntimeConfig();
const defaultOptions: UseFetchOptions<unknown> = { const defaultOptions: UseFetchOptions<unknown> = {
@ -14,9 +15,15 @@ const useServerRequest = async <T>(
onRequest({ options }) { onRequest({ options }) {
options.headers = options.headers || "application/json"; options.headers = options.headers || "application/json";
if (token.value) { if (token.value) {
console.log('user----', user.value);
console.log('token----', "Bearer " + token.value)
// @ts-ignore // @ts-ignore
options.headers["authorization"] = "Bearer " + token.value; options.headers["authorization"] = "Bearer " + token.value;
} }
console.log(url +'-----' +'options----', options);
}, },
onResponse({ response }) { onResponse({ response }) {
if (+response.status === 200 && +response._data.code !== 0) { if (+response.status === 200 && +response._data.code !== 0) {

View File

@ -72,11 +72,12 @@
import useUserStore from '~/store/user' import useUserStore from '~/store/user'
import dayjs from 'dayjs' import dayjs from 'dayjs'
const userStore = useUserStore() const userStore = useUserStore()
const user = useUserInfo();
const query = reactive({ const query = reactive({
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
userId: userStore.userId, userId: user.value.id,
title: '', title: '',
}) })
@ -118,6 +119,8 @@
const {data: result, refresh: getUserPointPageList } = await useAsyncData('getUserPointPage', async () => { const {data: result, refresh: getUserPointPageList } = await useAsyncData('getUserPointPage', async () => {
const res = await getUserPointPage(query) const res = await getUserPointPage(query)
return res.data return res.data
}, {
immediate: true, // 立即请求
}) })
// const getUserPointPageList = async () => { // const getUserPointPageList = async () => {

View File

@ -38,10 +38,12 @@ export default defineStore("useUserStore", {
} }
}, },
async getUserInfo() { async getUserInfo() {
const user = useUserInfo();
const res = await getUserInfo(); const res = await getUserInfo();
if (res.code === 0) { if (res.code === 0) {
this.userInfoRes = res.data; this.userInfoRes = res.data;
refreshToken.setUserInfo(res.data); refreshToken.setUserInfo(res.data);
user.value = res.data;
// 建立连接mqtt // 建立连接mqtt
this.connectMqtt(); this.connectMqtt();
} }