一、登录鉴权
1.创建一个登录后跳转的页面layout
(1)创建好了,在路由配置中添加,路径为’/‘
(2)在action中,使用router进行路由跳转
a.引入router.js中导出的router实例
2.登录鉴权方案
使用vue-router的全局路由前置守卫来把关每次路由跳转,创建permission.js文件,写入路由守卫规则
(1)用户未登录前,不允许进入非登录页面
(2)登录后,token未过期前,不允许进入登录页面
import router from '@/router'// import { getItem } from '@/utils/storage' 不用从本地获取,直接从vuex中拿import store from '@/store'const whiteList = ['/login', '/404', '401']router.beforeEach((to, from, next) => {/*** 如果用户没有登录,跳转到login页面* 如果用户登录后,判断token是否过期;如果过期,进图login页面,如果没有过期,判断to是否为login页面,是的话,进行提示*/// let token = getItem('token')console.log(store.getters.token, 'store.getters.token')const hasLogin = store.getters.tokenif (!hasLogin) {// 如果没有登录,只能进入白名单页面,否则调整到登录页面if (whiteList.includes(to.path)) {next()} else {next('login')}} else {// 如果登录了,不能进入登录页,要访问登录页时进入首页if (to.path === '/login') {next('/')} else {next()}}})
a.判断是否登录,直接从vuex的getters中获取token(定义getter对象,添加token属性,值为一个函数,接受state对象为参数)
// 快速访问const getters = {token: (state) => state.user.token}export default getters
b.未登录可以进入白名单页面
创建一个数组来管理白名单页面,可以快速判断
