fix: 未登录时静默跳过需要认证的API调用
Build and Push Docker Image / build-and-push (push) Successful in 1m1s
Build and Push Docker Image / deploy (push) Successful in 8s

- ProductDetail.vue: fetchUserCredits 添加登录检查
- Cart.vue: fetchUserProfile 添加登录检查
- Lotteries.vue: fetchLotteries 添加登录检查
- LotteryDetail.vue: getById/register 添加登录检查和错误处理

避免未登录用户访问页面时出现401错误
This commit is contained in:
2026-07-13 01:41:06 +00:00
parent 7b81d2944a
commit 625eb76ebc
3 changed files with 51 additions and 10 deletions
+7 -1
View File
@@ -458,10 +458,16 @@ async function fetchSettings() {
} }
async function fetchUserProfile() { async function fetchUserProfile() {
// 未登录时静默跳过
const token = localStorage.getItem('token')
if (!token) return
try { try {
const res: any = await userApi.getProfile() const res: any = await userApi.getProfile()
userCredits.value = res.data?.purchase_credits || 0 userCredits.value = res.data?.purchase_credits || 0
} catch {} } catch {
// 静默处理错误
}
} }
async function fetchPaymentChannels() { async function fetchPaymentChannels() {
+17 -5
View File
@@ -36,11 +36,23 @@ function formatDate(date: string) {
} }
async function fetchLotteries() { async function fetchLotteries() {
loading.value = true // 检查是否登录
const res: any = await lotteryApi.list() const token = localStorage.getItem('token')
lotteries.value = res.data || [] if (!token) {
total.value = res.pagination?.total || res.data?.length || 0 loading.value = false
loading.value = false return
}
try {
loading.value = true
const res: any = await lotteryApi.list()
lotteries.value = res.data || []
total.value = res.pagination?.total || res.data?.length || 0
} catch {
// 静默处理错误
} finally {
loading.value = false
}
} }
onMounted(fetchLotteries) onMounted(fetchLotteries)
+27 -4
View File
@@ -46,13 +46,36 @@ function formatDate(date: string) {
} }
onMounted(async () => { onMounted(async () => {
const res: any = await lotteryApi.getById(Number(route.params.id)) // 检查是否登录
lottery.value = res.data const token = localStorage.getItem('token')
if (!token) {
ElMessage.warning('请先登录后再查看抽奖详情')
return
}
try {
const res: any = await lotteryApi.getById(Number(route.params.id))
lottery.value = res.data
} catch {
// 静默处理错误
}
}) })
async function register() { async function register() {
await lotteryApi.register(Number(route.params.id)) // 检查是否登录
ElMessage.success('报名成功') const token = localStorage.getItem('token')
if (!token) {
ElMessage.warning('请先登录后再报名')
return
}
try {
await lotteryApi.register(Number(route.params.id))
ElMessage.success('报名成功')
} catch (err: any) {
const errorMsg = err.response?.data?.error || '报名失败'
ElMessage.error(errorMsg)
}
} }
</script> </script>