路由守卫和 生成 token
2020年3月4日
路由守卫
在项目中,需要检测用户是否未登入直接访问指定页面,这时候就要强制让用户跳转到登入页面
const router = new Router({
routes: [
{
path: '/',
redirect: '/login',
},
{
path: '/login',
name: 'login',
component: Login
}
]
})
router.beforeEach((to, from, next) => {
// 如果是 login 页面 放行
if (to.path === '/login') return next()
// 检测是否已经登入,若已经登入则放行
const tokenStr = window.sessionStorage.getItem('token')
// 未登入则强制跳转到登入页
if (!tokenStr) return next('/login')
next()
})
export default router
token
一般会在用户登入时生成一个 token
作为已经登入的凭证,用户的操作都需要检测这个凭证是否存在.
所需模块:uuid
安装:npm i uuid -D
const guld = require('uuid/v4')
// 生成一个 32 位的 token
let token = guld().replace(/\-/g, '')
// 设置 token 过期时间一周
let expires = 7 * 86400 * 1000
let token_expires = Math.floor((Date.now() + expires) / 1000)
// 将信息发生给前端
ctx.body = {
'state': 0,
'msg': '登入成功',
'token': token,
'token_expires': token_expires
}