37 lines
1.1 KiB
Markdown
37 lines
1.1 KiB
Markdown
# useAuthError.ts
|
||
|
||
**路径**:`src/composables/useAuthError.ts`
|
||
|
||
## 功能用途
|
||
|
||
统一处理 HTTP 401(Unauthorized)等权限相关错误,根据登录状态返回用户友好的提示文案:未登录时提示「请先登录」,已登录时提示「权限不足」。
|
||
|
||
## 核心能力
|
||
|
||
- `formatAuthError(err, fallback)`:将异常转换为展示文案
|
||
- 若错误信息包含 `401` 或 `Unauthorized`:根据 `userStore.isLoggedIn` 返回 `error.pleaseLogin` 或 `error.insufficientPermission`
|
||
- 否则返回原始错误信息或 `fallback`
|
||
|
||
## 使用方式
|
||
|
||
```typescript
|
||
import { useAuthError } from '@/composables/useAuthError'
|
||
|
||
const { formatAuthError } = useAuthError()
|
||
|
||
try {
|
||
await someApiCall()
|
||
} catch (e) {
|
||
errorMessage.value = formatAuthError(e, t('error.requestFailed'))
|
||
}
|
||
```
|
||
|
||
## 国际化
|
||
|
||
依赖 `error.pleaseLogin`、`error.insufficientPermission`,在各 `locales/*.json` 的 `error` 下配置。
|
||
|
||
## 扩展方式
|
||
|
||
1. **扩展状态码**:在 `formatAuthError` 中增加对 403 等的判断
|
||
2. **统一拦截**:在 `request.ts` 层统一处理 401,自动跳转登录或弹 toast
|