什么是路由鉴权呢,分两个层面
1.如果我们还未登录的话,如果我们跳转其他路由,我们需要自动跳转到登陆页面,并且把跳转的目标路由通过query参数保留下来,点击登录之后,直接跳转过去即可
2.如果我们已经登录了,那么就不能再跳转到登录界面了,如果用户再跳转登录界面,就会自动跳转到首页
这里通过路由守卫来实现这样的效果
import router from './index'
import { useUserStore } from '@/store/modules/user'
//这里之所以要再次引入pinia,是因为在组件外部没办法直接获取pinia大仓库,需要手动获取
import pinia from '@/store'
router.beforeEach((to: any, from: any, next: any) => {
let token=useUserStore(pinia).token
//用户已经登录
if(token){
if(to.path=='/login'){
next({path:'/'})
}else{
next()
}
}else{
if(to.path=='/login'){
next()
}else{
next({path:'/login',query:{redirect:to.path}})
}
}
})
router.afterEach((to: any, from: any) => {
})