Files
urldb/web/middleware/admin.ts

31 lines
1.0 KiB
TypeScript
Raw Normal View History

2025-11-19 02:22:04 +08:00
export default defineNuxtRouteMiddleware(async (to, from) => {
// 只在客户端执行认证检查
if (!process.client) {
return
}
const userStore = useUserStore()
// 初始化用户状态
userStore.initAuth()
// 等待一小段时间确保认证状态初始化完成
await new Promise(resolve => setTimeout(resolve, 100))
// 检查认证状态
if (!userStore.isAuthenticated) {
console.log('admin middleware - 用户未认证,重定向到登录页面')
return navigateTo('/login')
}
// 检查用户是否为管理员(通常通过用户角色或权限判断)
// 这里可以根据具体实现来调整,例如检查 userStore.user?.is_admin 字段
const isAdmin = userStore.user?.is_admin || userStore.user?.role === 'admin' || userStore.user?.username === 'admin'
if (!isAdmin) {
console.log('admin middleware - 用户不是管理员,重定向到首页')
return navigateTo('/')
}
console.log('admin middleware - 用户已认证且为管理员,继续访问')
})