lvfengfree 9e3b1f3c03 feat: 添加远程桌面Token分享功能
- 新增 WindowsCredential 模型和控制器,用于管理 Windows 凭据
- 新增 RemoteAccessToken 模型,支持生成可分享的远程访问链接
- 更新 RemoteDesktopController,添加 Token 生成、验证、撤销等 API
- 更新前端 RemoteDesktopModal,支持4种连接方式:快速连接、生成分享链接、手动输入、链接管理
- 新增 WindowsCredentialManager 组件用于管理 Windows 凭据
- 新增 RemoteAccessPage 用于通过 Token 访问远程桌面
- 添加 Vue Router 支持 /remote/:token 路由
- 更新数据库迁移,添加 WindowsCredentials 和 RemoteAccessTokens 表
2026-01-20 15:00:44 +08:00

73 lines
2.0 KiB
TypeScript

import { AppRouteRecordRaw } from '@/utils/router'
/**
* 静态路由配置(不需要权限就能访问的路由)
*
* 属性说明:
* isHideTab: true 表示不在标签页中显示
*
* 注意事项:
* 1、path、name 不要和动态路由冲突,否则会导致路由冲突无法访问
* 2、静态路由不管是否登录都可以访问
*/
export const staticRoutes: AppRouteRecordRaw[] = [
// 不需要登录就能访问的路由示例
// {
// path: '/welcome',
// name: 'WelcomeStatic',
// component: () => import('@views/dashboard/console/index.vue'),
// meta: { title: 'menus.dashboard.title' }
// },
{
path: '/auth/login',
name: 'Login',
component: () => import('@views/auth/login/index.vue'),
meta: { title: 'menus.login.title', isHideTab: true }
},
{
path: '/auth/register',
name: 'Register',
component: () => import('@views/auth/register/index.vue'),
meta: { title: 'menus.register.title', isHideTab: true }
},
{
path: '/auth/forget-password',
name: 'ForgetPassword',
component: () => import('@views/auth/forget-password/index.vue'),
meta: { title: 'menus.forgetPassword.title', isHideTab: true }
},
{
path: '/403',
name: 'Exception403',
component: () => import('@views/exception/403/index.vue'),
meta: { title: '403', isHideTab: true }
},
{
path: '/:pathMatch(.*)*',
name: 'Exception404',
component: () => import('@views/exception/404/index.vue'),
meta: { title: '404', isHideTab: true }
},
{
path: '/500',
name: 'Exception500',
component: () => import('@views/exception/500/index.vue'),
meta: { title: '500', isHideTab: true }
},
{
path: '/outside',
component: () => import('@views/index/index.vue'),
name: 'Outside',
meta: { title: 'menus.outside.title' },
children: [
// iframe 内嵌页面
{
path: '/outside/iframe/:path',
name: 'Iframe',
component: () => import('@/views/outside/Iframe.vue'),
meta: { title: 'iframe' }
}
]
}
]