位置: IT常识 - 正文

vue中 router.beforeEach() 的用法

编辑:rootadmin
vue中 router.beforeEach() 的用法

推荐整理分享vue中 router.beforeEach() 的用法,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

导航守卫 主要是通过跳转或取消得方式守卫导航

在前端路由跳转中,路由跳转前都是会经过beforeEach,而beforeEach可以通过next来控制到底去哪个路由。根据这个特性我们就可以在beforeEach中设置一些条件来控制路由的重定向。

常见的使用场景有:

1、验证用户是否登录(若未登录,且当前非登录页面,则自动重定向登录页面);2、用户权限;3、用户输入的路路径是否存在,不存在的情况下如何处理,重定向到哪个页面。vue中 router.beforeEach() 的用法

此处呢我使用一个简单的例子: 当用户输入的路径不存在的情况下,将其重定向到‘/’路径来说明beforeEach是如何控制路由的。

话不多说,直接看下边如何实现的(这里我以创建一个名为router-be的项目为例)。

第一步 : 规定进入路由是否需要权限

@/router/index.js

import A from '@/components/a'{path : '/a',name : 'a',component : A,meta : { // 加一个自定义objrequireAuth : true // 参数 true 代表需要登陆才能进入 A}}第二步 : 使用vuex 整一个useid

@/assets/store.js

//使用vuex三步走import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)//这个理论来说const store = new Vuex.Store({state:{userId : ''}})export default store第三步 : 使用router.beforeEach()思路:【如果(进入这个路由需要权限){如果(能获取到这个用户的userID){就让这个用户进入这个路由}否则{就让这个用户进入b这个页面}} 即将进入的路由不需要权限就能进入 {就让这个用户进入这个路由}】对应代码:import store from '@/assets/store' //把这个userId获取过来router.beforeEach((to,from,next)=>{if(to.meta.requireAuth){if(store.state.userId){next()}else{next({path:'/b'})}}else{next()}})实现原理 constrouter=newVueRouter({…}) router.beforeEach((to,from,next)=>{// …}) 每个守卫方法接受三个参数 :

1.to => route : 即将进入的目标路由对象 2.from => route : 当前导航正要离开的路由 3.next => function: 一定要调用该方法来 resolve这个钩子,执行效果以来 next 方法的调用参数

第四步上一步 /b 路由为 登陆页面当进入A 页面之前,需要先请求接口,获取是否有登录,然后把userId存在vuex 的state 中当没有userId 时,则在登录之后,存一个userId 到state 里第五步 项目中使用router.beforeEach((to, from, next) => { console.log(to); // DEBUG: 测试 return next(); const { ldomain } = to.query; if (ldomain) { document.domain = ldomain; } const { LoginPage } = byskConfig; if (!router.getMatchedComponents(to.path).length) { console.log("not page", to, from); return next(byskConfig.NotFoundPage.path); } //验证权限 if (to.meta.permId && !hasPerms(to.meta.permId)) { console.log("no auth", to, from); return next(LoginPage.path); } //验证是否登录 if (to.meta.permId && !getCookie("sid")) { console.log("no login & signout", to, from); return next(LoginPage.path); } if (to.matched.length) { let parentRoute = to.matched[to.matched.length - 1].parent; if ( parentRoute && parentRoute.meta.hasOwnProperty("redirect") && parentRoute.meta.redirect !== to.path) { parentRoute.meta.redirect = to.path; } } next();});

权限

export function setupPermissionGuard(router) { router.beforeEach(async (to, from, next) => { const { state, commit, dispatch } = store; // TODO: 404 的处理 // 不需要登录,可访问 if (to.meta.ignoreAuth === true) { next(); return; } // TODO: 白名单 // 刷新重新登录 if (!state.appToken) { await dispatch('relogin'); } // 处理token const hasToken = !!state.appToken; if (!hasToken) { // 未登陆,或过期 // 重定向到登录页 const redirectData = { path: LOGIN_PATH, replace: true, }; next(redirectData); return; } // 判断是否有权限 const hasAuthority = to.meta.permId && hasPerms(to.meta.permId); if (hasAuthority) { // 权限验证 if (to.meta.ignoreKeepAlive !== true) { // 页面需要缓存, 添加到缓存 const { cachePages } = state; const { matched } = to; commit('setCachePages', [...cachePages, ...matched.slice(1)]); } next(); return; } next(from.path); // next(); }); router.afterEach((to) => { if (to.meta?.label) { // 设置页面`title` document.title = `一立科技 - ${to.meta.label}`; } });}

本文链接地址:https://www.jiuchutong.com/zhishi/296092.html 转载请保留说明!

上一篇:【前端学习笔记—使用JS修改样式】(前端基础入门)

下一篇:ElementUI中<el-form>标签中 ref、:model、:rules 的作用

  • 发票红票和退票区别在哪
  • 建筑行业异地工资怎么算
  • 广告公司会议记录内容
  • 分税制的内容有哪些?
  • 电子承兑汇票接收和转出步骤
  • 销货清单和发票金额不一致
  • 年度所得税汇算清缴报告在哪打印
  • 应交税费账户进项税额为借方是什么意思?
  • 公司租的员工宿舍退租,现在要开发票给人家退房租
  • 固定资产赔偿制度
  • 个人出租住房如何开票
  • 电子发票详见清单怎么开
  • 专票进项税可以抵扣几个月以前的
  • 用于非增值税应交税费
  • 实收资本印花税最新政策2023年
  • 机票退票手续费为什么这么贵
  • 合作社开具的免税普票计算抵扣
  • 什么是劳动保护费支出
  • 金银首饰的消费税税务处理
  • 股权变更之后税务变更
  • 不动产登记房屋已竣工的材料
  • 外币借款利息汇兑差额计算公式
  • 发票总金额怎么算折扣
  • 新成立的公司股权转让交税吗
  • 华为mate50耳机孔和充电口一样吗
  • Win10任务栏图标居中
  • linux批量操作工具
  • windows为什么从7开始
  • wordpress邮箱怎么配置
  • 温尼伯湖成因
  • 管理费用怎么记凭证
  • php验证源码
  • 管理费用属于产品成本项目的费用吗
  • php 获取当前url
  • 外汇申报中付款什么意思
  • 应收票据确认坏账怎么处理
  • vscode的常用插件
  • 调出command命令窗口
  • 附表一般写在哪
  • 海关双抬头发票公司名可以更改吗
  • sql server中变量声明的命令是什么
  • 订单不足停工
  • 红字发票信息表怎么打印出来
  • 更正申报多交的增值税查账么
  • 销售费用福利费和管理费用福利费
  • 折旧率多少正常
  • 大家怎么看理想这个牌子
  • 单位缴纳工会经费有什么用
  • 租赁厂房生产是生产经营活动吗
  • 上年的应收帐款怎么记账
  • 权益净利率计算公式产权比率
  • 税款返点如何做账务处理
  • 小规模餐饮业会计如何做账
  • 信用减值损失6702
  • 增值税发票红冲和作废的区别
  • 企业租个人房屋个税代扣代缴
  • 会计及库管岗位职责(要求)
  • find linux命令详解
  • Linux一键安装ftp
  • RegSrvc.exe - RegSrvc是什么进程 有什么用
  • win7系统如何调节电脑屏幕亮度
  • xp电脑网络连接配置异常怎么办
  • win8.1玩游戏卡
  • win8开不了机怎么系统还原
  • python中flask模块
  • python语言解析
  • window.requestAnimationFrame是什么意思,怎么用
  • js实现功能
  • unity火球特效
  • 如何使用jquery设置一个属性值
  • ExpandableListView 实现分组购物车
  • js继承的概念
  • 常州的居民医保在哪里交
  • 长春市税务局电话号
  • 四川增值税发票图片
  • 南通开发区地图高清版
  • 湖南省地方税务局综合楼项目设计
  • 计提缴纳城建税分录
  • 税务局宪法宣传日
  • 2022年太原医保缴费时间
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设