解决假登录问题

This commit is contained in:
bob
2024-09-01 14:35:41 +08:00
parent b77ea024bc
commit cfff5328c4
6 changed files with 15 additions and 21 deletions

View File

@@ -40,7 +40,7 @@ const onUpload = async () => {
const res = await userUploadAvatarService({ file: selectedFile })
const { originUrl, thumbUrl } = res.data.data
await userModifySelfService({ avatar: originUrl, avatarThumb: thumbUrl })
userData.getUserForce()
userData.getUser()
ElMessage.success('头像上传成功')
emit('update:modelValue', false)
selectedFile = null

View File

@@ -2,4 +2,3 @@ export const CLIENT_TYPE = 2
export const CLIENT_NAME = 'web'
export const CLIENT_VERSION = '0.0.1'
export const CLIENT_ID = 'XXAA'
export const USER_DATA_EXPIRE = 3600

View File

@@ -52,15 +52,15 @@ const router = createRouter({
})
router.beforeEach((to, from, next) => {
// 如果没有token,且访问的是非登录页,拦截到登录
// 如果没有登录,且访问的是非登录页,拦截到登录
const userData = userStore()
if (!userData.at.token && to.path !== '/login') {
if (!userData.isLogin() && to.path !== '/login') {
next('/login')
return
}
// 如果有token,且访问的是登录页,拦截到首页
if (userData.at.token && to.path === '/login') {
// 如果登录,且访问的是登录页,拦截到首页
if (userData.isLogin() && to.path === '/login') {
next('/')
return
}

View File

@@ -1,7 +1,6 @@
import { defineStore } from 'pinia'
import { ref } from 'vue'
import { userInfoService } from '@/api/user'
import { USER_DATA_EXPIRE } from '@/const/userConst'
// 用户模块
export const userStore = defineStore(
@@ -49,24 +48,21 @@ export const userStore = defineStore(
}
const user = ref({})
const loginTime = ref(0)
const getUser = async () => {
const now = new Date().getTime()
if (loginTime.value === 0 || now - loginTime.value > USER_DATA_EXPIRE * 1000) {
const res = await userInfoService()
user.value = res.data.data
loginTime.value = now
}
}
const getUserForce = async () => {
const res = await userInfoService()
user.value = res.data.data
loginTime.value = new Date().getTime()
}
const setUser = (obj) => {
user.value = obj
}
const isLogin = () => {
const now = new Date().getTime()
return at.value.expiretime && now < at.value.expiretime
}
return {
at,
rt,
@@ -76,9 +72,8 @@ export const userStore = defineStore(
clearRt,
user,
getUser,
getUserForce,
setUser,
loginTime
isLogin
}
},
{

View File

@@ -34,7 +34,7 @@ const clickListener = (e) => {
}
const openMyCardDialog = () => {
userData.getUserForce() //打开头像信息之前,强制刷新一把数据
userData.getUser()
myCardDialog.value.open()
}

View File

@@ -28,7 +28,7 @@ const onSave = () => {
const res = userModifySelfService(formModel.value)
res.then(() => {
ElMessage.success('信息保存成功')
userData.getUserForce()
userData.getUser()
})
res.finally(() => {
isLoading.value = false