在vue3路由守卫使用pinia里面存储的token跟sessionStorage中的tokne进行比对出现报错,如下。
很简单的问题,网上的结果五花八门,最终看文档解决了。原因router挂载比pinia要早,守卫在在使用pinia时,pinia还没有挂载,把pinia写在守卫里面即可解决问题
router.beforeEach((to, from, next) => {
//在这里创建loginStore 即可
const loginStore = useLoginStore();
const token = sessionStorage.getItem('token')
if (to.path == '/') return next()
if (token == loginStore.Token) {
next()
} else {
router.push('/')
}
})