feat(登录): 增加通过URL参数直接登录的功能

在路由守卫和登录逻辑中添加对URL参数的处理,当URL中包含token、username和level时,可以直接登录并跳转到对应页面,无需API验证。同时启用路由的认证元信息配置。
This commit is contained in:
2025-08-27 20:24:31 +08:00
parent 71d2432df5
commit 2ba97b83ec
3 changed files with 67 additions and 12 deletions

View File

@@ -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>