Compare commits
2 Commits
71d2432df5
...
2a52e8f0f6
| Author | SHA1 | Date | |
|---|---|---|---|
| 2a52e8f0f6 | |||
| 2ba97b83ec |
@@ -17,37 +17,37 @@ const routes = [
|
||||
path: '/login',
|
||||
name: 'Login',
|
||||
component: Login,
|
||||
// meta: { requiresAuth: false }
|
||||
meta: { requiresAuth: false }
|
||||
},
|
||||
{
|
||||
path: '/sale',
|
||||
name: 'Sale',
|
||||
component: Sale,
|
||||
// meta: { requiresAuth: true, minLevel: 1 }
|
||||
meta: { requiresAuth: true, minLevel: 1 }
|
||||
},
|
||||
{
|
||||
path: '/manager',
|
||||
name: 'Manager',
|
||||
component: Manager,
|
||||
// meta: { requiresAuth: true, minLevel: 2 }
|
||||
meta: { requiresAuth: true, minLevel: 2 }
|
||||
},
|
||||
{
|
||||
path: '/senior-manager',
|
||||
name: 'SeniorManager',
|
||||
component: SeniorManager,
|
||||
// meta: { requiresAuth: true, minLevel: 3 }
|
||||
meta: { requiresAuth: true, minLevel: 3 }
|
||||
},
|
||||
{
|
||||
path: '/second-top',
|
||||
name: 'SecondTop',
|
||||
component: SecondTop,
|
||||
// meta: { requiresAuth: true, minLevel: 4 }
|
||||
meta: { requiresAuth: true, minLevel: 4 }
|
||||
},
|
||||
{
|
||||
path: '/top',
|
||||
name: 'Top',
|
||||
component: TopOne,
|
||||
// meta: { requiresAuth: true, minLevel: 5 }
|
||||
meta: { requiresAuth: true, minLevel: 5 }
|
||||
}
|
||||
]
|
||||
|
||||
@@ -57,9 +57,47 @@ const router = createRouter({
|
||||
})
|
||||
|
||||
// 路由守卫
|
||||
router.beforeEach((to, from, next) => {
|
||||
router.beforeEach(async (to, from, next) => {
|
||||
const userStore = useUserStore()
|
||||
|
||||
// 检查URL参数中是否包含token和用户信息(来自其他页面的跳转)
|
||||
const urlToken = to.query.token
|
||||
const urlUsername = to.query.username
|
||||
const urlLevel = to.query.level
|
||||
|
||||
// 如果URL中包含token和用户信息,进行自动登录
|
||||
if (urlToken && urlUsername && urlLevel) {
|
||||
try {
|
||||
// 解码用户名(URL编码的中文)
|
||||
const decodedUsername = decodeURIComponent(urlUsername)
|
||||
|
||||
// 直接设置用户信息到store(跳过API验证,因为token来自可信源)
|
||||
userStore.login(urlToken, decodedUsername, parseInt(urlLevel), '', '')
|
||||
|
||||
// 根据用户等级跳转到对应页面
|
||||
const defaultRoutes = {
|
||||
1: '/sale',
|
||||
2: '/manager',
|
||||
3: '/senior-manager',
|
||||
4: '/second-top',
|
||||
5: '/top'
|
||||
}
|
||||
|
||||
const targetRoute = defaultRoutes[parseInt(urlLevel)] || '/sale'
|
||||
|
||||
// 如果当前路由就是目标路由,直接通过;否则重定向
|
||||
if (to.path === targetRoute) {
|
||||
next()
|
||||
} else {
|
||||
next(targetRoute)
|
||||
}
|
||||
return
|
||||
} catch (error) {
|
||||
console.error('自动登录失败:', error)
|
||||
// 如果自动登录失败,继续正常的路由守卫逻辑
|
||||
}
|
||||
}
|
||||
|
||||
// 如果路由不需要认证,直接通过
|
||||
if (!to.meta.requiresAuth) {
|
||||
next()
|
||||
|
||||
@@ -5,8 +5,8 @@ import { useUserStore } from '@/stores/user'
|
||||
|
||||
// 创建axios实例
|
||||
const service = axios.create({
|
||||
// baseURL: 'https://mldash.nycjy.cn/' || '', // API基础路径,支持完整URL
|
||||
baseURL: 'http://192.168.15.121:8890' || '', // API基础路径,支持完整URL
|
||||
baseURL: 'https://mldash.nycjy.cn/' || '', // API基础路径,支持完整URL
|
||||
// baseURL: 'http://192.168.15.121:8890' || '', // API基础路径,支持完整URL
|
||||
timeout: 100000, // 请求超时时间
|
||||
headers: {
|
||||
'Content-Type': 'application/json;charset=UTF-8'
|
||||
@@ -32,7 +32,7 @@ service.interceptors.request.use(
|
||||
_t: Date.now()
|
||||
}
|
||||
}
|
||||
|
||||
// https://mldash.nycjy.cn/login
|
||||
// 显示加载状态
|
||||
if (config.showLoading !== false) {
|
||||
// 可以在这里添加全局loading
|
||||
|
||||
@@ -552,12 +552,25 @@ const cancelSecuritySetup = () => {
|
||||
}
|
||||
|
||||
// Token验证登录函数
|
||||
const handleTokenLogin = async (token) => {
|
||||
const handleTokenLogin = async (token, username = null, userLevel = null) => {
|
||||
loading.value = true
|
||||
errorMessage.value = ''
|
||||
|
||||
try {
|
||||
// 使用token进行验证登录
|
||||
// 如果URL中包含用户信息,直接使用(跳过API验证)
|
||||
if (username && userLevel) {
|
||||
// 解码用户名
|
||||
const decodedUsername = decodeURIComponent(username)
|
||||
|
||||
// 直接设置用户信息到store
|
||||
userStore.login(token, decodedUsername, parseInt(userLevel), '', '')
|
||||
|
||||
// 根据用户等级跳转到对应页面
|
||||
navigateToUserPage(parseInt(userLevel))
|
||||
return
|
||||
}
|
||||
|
||||
// 使用token进行API验证登录
|
||||
const response = await http.post('/api/v1/token_login', {
|
||||
token: token
|
||||
})
|
||||
@@ -586,9 +599,13 @@ const handleTokenLogin = async (token) => {
|
||||
// 组件挂载时检查路由参数中的token
|
||||
onMounted(() => {
|
||||
const token = route.query.token
|
||||
const username = route.query.username
|
||||
const userLevel = route.query.level
|
||||
|
||||
if (token) {
|
||||
// 如果路由参数中有token,直接进行token验证登录
|
||||
handleTokenLogin(token)
|
||||
// 如果路由参数中有token,进行token验证登录
|
||||
// 如果同时有用户信息,直接使用;否则通过API验证
|
||||
handleTokenLogin(token, username, userLevel)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user