feat(登录): 增加通过URL参数直接登录的功能
在路由守卫和登录逻辑中添加对URL参数的处理,当URL中包含token、username和level时,可以直接登录并跳转到对应页面,无需API验证。同时启用路由的认证元信息配置。
This commit is contained in:
@@ -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