- 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>
98 lines
3.6 KiB
TypeScript
98 lines
3.6 KiB
TypeScript
import { defineConfig } from '@vben/vite-config';
|
||
|
||
export default defineConfig(async () => {
|
||
return {
|
||
application: {},
|
||
vite: {
|
||
server: {
|
||
allowedHosts: true,
|
||
proxy: {
|
||
// ==================== AIoT 统一路由 ====================
|
||
|
||
// aiot/alarm, aiot/edge -> 告警服务 :8000(直通)
|
||
'/admin-api/aiot/alarm': {
|
||
changeOrigin: true,
|
||
target: 'http://127.0.0.1:8000',
|
||
},
|
||
'/admin-api/aiot/edge': {
|
||
changeOrigin: true,
|
||
target: 'http://127.0.0.1:8000',
|
||
},
|
||
|
||
// 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'),
|
||
},
|
||
// 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',
|
||
),
|
||
},
|
||
// 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'),
|
||
},
|
||
|
||
// ==================== 系统基础路由 ====================
|
||
|
||
// 认证相关接口 -> 告警平台(测试阶段提供模拟认证)
|
||
'/admin-api/system/auth': {
|
||
changeOrigin: true,
|
||
target: 'http://127.0.0.1:8000',
|
||
ws: true,
|
||
},
|
||
// 租户相关接口 -> 告警平台(测试阶段返回默认值)
|
||
'/admin-api/system/tenant': {
|
||
changeOrigin: true,
|
||
target: 'http://127.0.0.1:8000',
|
||
},
|
||
// 验证码接口 -> 告警平台(测试阶段返回禁用状态)
|
||
'/admin-api/system/captcha': {
|
||
changeOrigin: true,
|
||
target: 'http://127.0.0.1:8000',
|
||
},
|
||
// 字典数据接口 -> 告警平台(测试阶段返回空)
|
||
'/admin-api/system/dict-data': {
|
||
changeOrigin: true,
|
||
target: 'http://127.0.0.1:8000',
|
||
},
|
||
// 消息通知接口 -> 告警平台(测试阶段返回空)
|
||
'/admin-api/system/notify-message': {
|
||
changeOrigin: true,
|
||
target: 'http://127.0.0.1:8000',
|
||
},
|
||
// 其他接口 -> 芋道主平台(未来对接)
|
||
// 测试阶段:这些接口会 404,但不影响核心功能
|
||
'/admin-api': {
|
||
changeOrigin: true,
|
||
rewrite: (path) => path.replace(/^\/admin-api/, ''),
|
||
target: 'http://localhost:48080/admin-api',
|
||
ws: true,
|
||
},
|
||
},
|
||
},
|
||
},
|
||
};
|
||
});
|