lg_frontend/middleware/auth.js

47 lines
1.4 KiB
JavaScript
Raw Normal View History

2024-07-30 15:55:13 +00:00
// 在某个适当的时间点检查登录状态是否过期
function isLoginExpired(loginTimestamp, expirationDuration) {
// 获取登录时间戳
// 如果没有登录时间戳,说明用户未登录或状态已过期
if (!loginTimestamp) {
return true;
}
// 计算登录时间和现在的时间差
const currentTimestamp = Date.now();
const duration = currentTimestamp - loginTimestamp;
// 如果时间差大于3小时的毫秒数则登录状态过期
return duration > expirationDuration;
}
export default function ({ route, redirect, store }) {
if (route.name === 'manager-login') {
return
}
if (localStorage.getItem('userInfo')) {
const cache = JSON.parse(localStorage.getItem('userInfo'))
const { expire, loginTime } = cache
// 在页面加载时检查登录状态
if (isLoginExpired(loginTime, expire)) {
// 用户登录已过期,执行登录过期的逻辑
console.log('登录已过期');
return redirect('/manager/login')
} else {
// 用户登录有效,执行登录有效的逻辑
store.dispatch('user/setUserInfo', cache)
if (route.path === '/') {
return redirect('/home')
}
}
} else {
// 假设用户信息存储在 Vuex store 中
const user = store.state.user
// 检查路由是否需要认证
if (!user.isLogin) {
return redirect('/manager/login')
}
}
}