fix(aiot): 修复 WVP 认证机制,实现自动登录和 token 管理

- WVP 使用独立 JWT 认证(access-token 头),与芋道 Authorization Bearer 不同
- 实现 WVP 自动登录:首次请求时自动调用 /api/user/login 获取 token
- 缓存 token 防止重复登录,401 时自动续期
- 响应拦截器自动解包 WVP {code:0, data:...} 格式
- Vite 代理新增 /aiot/device/user 和 /aiot/device/server 路由规则
- 移除已废弃的 aiot/video 代理规则

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-09 10:24:47 +08:00
parent f7bfde0135
commit 184bb863b0
2 changed files with 109 additions and 25 deletions

View File

@@ -8,6 +8,7 @@ export default defineConfig(async () => {
allowedHosts: true,
proxy: {
// ==================== AIoT 统一路由 ====================
// aiot/alarm, aiot/edge -> 告警服务 :8000直通
'/admin-api/aiot/alarm': {
changeOrigin: true,
@@ -17,36 +18,44 @@ export default defineConfig(async () => {
changeOrigin: true,
target: 'http://127.0.0.1:8000',
},
// aiot/device/proxy -> WVP :18080rewrite: /admin-api/aiot/device/proxy -> /api/proxy
// 摄像头拉流代理接口在 /api/proxy 下,需单独匹配
// aiot/device/* -> WVP :18080按子路径分别 rewrite
// 注意:更具体的路径必须写在通配路径前面
// 摄像头拉流代理: /admin-api/aiot/device/proxy -> /api/proxy
'/admin-api/aiot/device/proxy': {
changeOrigin: true,
target: 'http://127.0.0.1:18080',
rewrite: (path: string) =>
path.replace('/admin-api/aiot/device/proxy', '/api/proxy'),
},
// aiot/device/server -> WVP :18080rewrite: -> /api/server/media_server
// WVP 用户认证: /admin-api/aiot/device/user -> /api/user
'/admin-api/aiot/device/user': {
changeOrigin: true,
target: 'http://127.0.0.1:18080',
rewrite: (path: string) =>
path.replace('/admin-api/aiot/device/user', '/api/user'),
},
// 媒体服务器: /admin-api/aiot/device/server -> /api/server/media_server
'/admin-api/aiot/device/server': {
changeOrigin: true,
target: 'http://127.0.0.1:18080',
rewrite: (path: string) =>
path.replace('/admin-api/aiot/device/server', '/api/server/media_server'),
path.replace(
'/admin-api/aiot/device/server',
'/api/server/media_server',
),
},
// aiot/device -> WVP :18080rewrite: /admin-api/aiot/device -> /api/ai
// ROI/算法/配置等: /admin-api/aiot/device -> /api/ai(通配,放最后
'/admin-api/aiot/device': {
changeOrigin: true,
target: 'http://127.0.0.1:18080',
rewrite: (path: string) =>
path.replace('/admin-api/aiot/device', '/api/ai'),
},
// aiot/video -> WVP :18080rewrite: /admin-api/aiot/video -> /api
'/admin-api/aiot/video': {
changeOrigin: true,
target: 'http://127.0.0.1:18080',
rewrite: (path: string) =>
path.replace('/admin-api/aiot/video', '/api'),
},
// ==================== 系统基础路由 ====================
// 认证相关接口 -> 告警平台(测试阶段提供模拟认证)
'/admin-api/system/auth': {
changeOrigin: true,