fix: 修复未登录访问购物车页面报错不跳转登录页

- 给需要认证的路由添加 requiresAuth meta
- 修改 API 拦截器,401 错误时跳转登录页
- 路由守卫在用户未登录时拦截并跳转登录页
- 避免公开接口和登录/注册接口的 401 错误触发跳转

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-02 20:09:15 +08:00
parent c6400f5f67
commit d69b1444ff
2 changed files with 20 additions and 20 deletions
+9 -9
View File
@@ -27,18 +27,18 @@ api.interceptors.response.use(
const message = error.response?.data?.error || error.message || 'Request failed'
if (error.response?.status === 401) {
const isLoginRequest = error.config?.url?.includes('/auth/login')
if (isLoginRequest) {
const isRegisterRequest = error.config?.url?.includes('/auth/register')
const isPublicRequest = error.config?.url?.includes('/settings/public') || error.config?.url?.includes('/installed')
if (isLoginRequest || isRegisterRequest) {
ElMessage.error(message)
} else {
const hadToken = !!localStorage.getItem('token')
} else if (!isPublicRequest) {
localStorage.removeItem('token')
localStorage.removeItem('user')
if (hadToken) {
ElMessage.error('登录已过期,请重新登录')
router.push('/login')
} else {
ElMessage.error(message)
}
ElMessage.error('请先登录')
router.push('/login')
} else {
ElMessage.error(message)
}
} else {
ElMessage.error(message)