Vue开发基础六: 路由守卫(判断登录状态)

一、配置路由参数

在router/index.js 文件中配置路由信息

redirect: 配置路由自动跳转
meta.requireAuth: 自定义参数 requireAuth ,标志是否需要判断登录状态(main.js中路由守卫将判断此参数)

import { createRouter, createWebHistory } from 'vue-router'
import LoginView from '../views/LoginView.vue'

const routes = [
  {
    path: "/",
    redirect: "/login"
  },
  {
    path: '/login',
    name: 'login',
    component: LoginView,
  },
  {
    path: '/test',
    name: 'test',
    component: () => import('../views/TestView'),
    meta:{
      requireAuth:false,
    }
  },
  {
    path: '/index',
    name: 'index',
    component: () => import('../views/IndexView'),
    meta:{
      requireAuth:true,
    }
  },
  {
    path: '/news/list',
    name: 'newsList',
    component: () => import('../views/NewsList'),
    meta:{
      requireAuth:true,
    }
  }
]

const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes
})

export default router

二、main.js 设置路由守卫

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import { isLogin } from "@/utils/MyFuncs";

// 引入element-plus及其样式
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'

// 引入ElementPlusIconsVue
import * as ElementPlusIconsVue from '@element-plus/icons-vue'

const app = createApp(App);
app.use(ElementPlus)
    .use(store).use(router).mount('#app')

// 从 @element-plus/icons-vue 中导入所有图标并进行全局注册
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
    app.component(key, component)
}

// 路由守卫: 判断router/index.js中是否配置 requireAuth
router.beforeEach((to, from, next) => {
    // 判断页面是否需要检测登录状态
    if(to.meta.requireAuth){
        if(!isLogin()){
            next({
                path: "/login",
            })
        }else{
            next();
        }
    }else{
        next();
    }
    // 访问login页面时,若已登陆,则直接跳转首页
    if(to.name == "login"){
        if (isLogin()){
            router.push("/index");
        }
    }
})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容