router.beforeEach((to, from, next) => {
if (to.meta.title) {
document.title = to.meta.title
}
// 通过url的token来注册
let token = sessionStorage.getItem('wxtoken') || ''
// 如果session和query都没有token,需要去授权
if (token == '' && !to.query.token) {
// 去授权
let url =
process.env.VUE_APP_AUTHORIZEURL +
escape('http://shuichang.xinglian.info' + to.fullPath)
// window.location.href = process.env.VUE_APP_AUTHORIZEURL + uri
window.location.replace(url)
} else {
if (token) {
// 说明已经有了token,可以直接过去了
if (to.name === 'deviceinfo' && !to.query.token) {
window.location.href =
process.env.VUE_APP_URL + to.fullPath + '&token=' + token
} else {
next()
}
} else {
// 说明第一次进来,session中没有token
token = to.query.token
if (!token || !/\S/.test(token)) {
Message({
message: '用户未注册或未激活(没有token)',
type: 'error'
})
} else {
// 第一次拿着token进来要做的事情
let userIdToken = token.slice(
token.indexOf('.') + 1,
token.lastIndexOf('.')
)
// 拿到userId和roleList
let data = JSON.parse(Base64.decode(userIdToken))
let userId = data.sub
let roleList = data.roleList.split(',')
let areaId = data.areaId
sessionStorage.setItem('wxtoken', token, 30 * 60)
sessionStorage.setItem('userId', userId)
sessionStorage.setItem('roleList', JSON.stringify(roleList))
sessionStorage.setItem('areaId', areaId)
store.dispatch('changeCurRoleList', roleList)
next()
}
}
}
})
vue登录-路由守卫校验token
最新推荐文章于 2023-10-11 11:31:08 发布