Vue 路由守卫验证登录状态
router.js
// 登录标识,needlogin
{
path: '/goodsblock',
name: 'goodsblock',
component: () => import('@/views/goods/GoodsBlock.vue'),
meta: { title: '好物', endMenuShow: true, needlogin: true }
}
router - index.js
router.beforeEach((to, from, next) => {
// 404
if (to.matched.length === 0) { next('/404') }
// 改变 title
if (to.meta.title) { document.title = to.meta.title }
// 验证登录状态, 注意死循环,判断路由=login进行next()
const ttoken = cookie.getCookie('logins')
if (to.matched.some(record => record.meta.needlogin)) {
if (ttoken && ttoken.token) { next(); return } else {
next({ name: 'login', query: { redirect: to.fullPath } })
return
}
}
next()
})
login.vue
// 登录返回200,存token及用户信息后,跳转至携带参数地址
if (code === 200) {
localStorage.setItem("ttoken", data.token);
this.$router.push({ path: decodeURIComponent(this.$route.query.redirect) || '/' })
}
mine.vue //我的需要登录
this.$router.push({
path: '/login',
// 携带当前页面的路由,这样登录会回到当前页
query: { redirect: '/mine' }
})
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。