位置: 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 的作用

  • 怎样做到让微博用户自动转发你推广的内容?(怎样做到让微博推送消息)

    怎样做到让微博用户自动转发你推广的内容?(怎样做到让微博推送消息)

  • QCY蓝牙耳机怎么双耳模式(qcy蓝牙耳机怎么开机)

    QCY蓝牙耳机怎么双耳模式(qcy蓝牙耳机怎么开机)

  • 手机屏幕边缘显示不全(手机屏幕边缘显示不全vivo)

    手机屏幕边缘显示不全(手机屏幕边缘显示不全vivo)

  • 5500xt什么水平

    5500xt什么水平

  • 京东一年升级补贴是什么(京东商城升级)

    京东一年升级补贴是什么(京东商城升级)

  • 抖音很费电怎么解决(如何解决抖音耗电)

    抖音很费电怎么解决(如何解决抖音耗电)

  • 手机控制台在哪里打开(手机控制台有什么作用)

    手机控制台在哪里打开(手机控制台有什么作用)

  • 为啥我发的抖音作品没人点赞(为啥我发的抖音上面显示搜索)

    为啥我发的抖音作品没人点赞(为啥我发的抖音上面显示搜索)

  • 联发科heliop65相当于高通骁龙多少(联发科heliop65相当于麒麟什么处理器)

    联发科heliop65相当于高通骁龙多少(联发科heliop65相当于麒麟什么处理器)

  • 苹果手机音量键凹进去了(苹果手机音量键不能调铃声音量)

    苹果手机音量键凹进去了(苹果手机音量键不能调铃声音量)

  • 打印机扫描仪错误是什么意思(打印机扫描仪错误22)

    打印机扫描仪错误是什么意思(打印机扫描仪错误22)

  • wps为什么老提示已停止工作(wps不停出现异常)

    wps为什么老提示已停止工作(wps不停出现异常)

  • 抖音号已重置是什么意思(抖音已重置是什么原因)

    抖音号已重置是什么意思(抖音已重置是什么原因)

  • 苹果xr公开版是啥意思(苹果xr移动版和公开版怎么区分)

    苹果xr公开版是啥意思(苹果xr移动版和公开版怎么区分)

  • 手机为什么会停机(手机为什么会停机打电话对方停机怎么回事)

    手机为什么会停机(手机为什么会停机打电话对方停机怎么回事)

  • 复印机缩印怎么弄(复印机缩印怎么设置横向)

    复印机缩印怎么弄(复印机缩印怎么设置横向)

  • 手机上hd怎么关闭(手机上hd什么意思)

    手机上hd怎么关闭(手机上hd什么意思)

  • 一个存储结构包括(一个存储结构包括三个主要部分)

    一个存储结构包括(一个存储结构包括三个主要部分)

  • 小米智能出行怎么打开(小米智能出行怎么退出)

    小米智能出行怎么打开(小米智能出行怎么退出)

  • 抖音粉丝牌子怎么切换(抖音的粉丝牌)

    抖音粉丝牌子怎么切换(抖音的粉丝牌)

  • qq送的礼物可以换钱吗(qq送的礼物可以退回去吗)

    qq送的礼物可以换钱吗(qq送的礼物可以退回去吗)

  • vivoz5x反向充电需要线吗(vivoz5x反向充电怎么用)

    vivoz5x反向充电需要线吗(vivoz5x反向充电怎么用)

  • 微信收款码有效期多久(怎么弄微信收款码)

    微信收款码有效期多久(怎么弄微信收款码)

  • xp系统中右键计算机点击

    xp系统中右键计算机点击"管理"为什么无法打开?(xp系统鼠标右键不能用怎么办)

  • 土豆发芽了能吃吗?慎吃发了芽的土豆(土豆发芽了能吃吗有没有毒)

    土豆发芽了能吃吗?慎吃发了芽的土豆(土豆发芽了能吃吗有没有毒)

  • 商品混凝土税率为啥是3%
  • 计提房产税和土地税
  • a企业给关联公司借款怎么做账
  • 公司代个人收承兑汇票
  • 税费的计提和缴纳
  • 个人所得税app是什么意思
  • 境外企业所得税税率
  • 企业计提的资产包括哪些
  • 待认证进项分录
  • 公司筹建期间
  • 营改增试点实施办法的法律层次是
  • 质量扣款可以放到费用吗
  • 收购发票税率是什么意思
  • 废品损失科目月末
  • 长期借款费用资本化
  • 房地产企业扣除项目
  • 零申报的企业所得税年报怎么填
  • 试营业期间的费用算不算开办费?
  • 库存商品在贷方怎么调回借方
  • 公司购买进口产成品关税会计分录怎么做?
  • 去年的发票今年能用吗
  • xp从做系统
  • dolby audio设置
  • macos使用技巧
  • 社保缴纳基数相差多少
  • lsalss.exe
  • 利息补偿金怎么算
  • vue中下载文件
  • echarts饼图颜色设置
  • 小企业如何记账
  • 深度学习之快速实现数据集增强的方法
  • php安装openssl扩展
  • lvs命令
  • 稽查增值税跨年了销项税额如何转出
  • 计提增值税怎么计提
  • 应收帐款质保金
  • 采矿权如何进行融资
  • 小规模年销售额500万界定标准
  • 房产税计入管理费用还是营业税金及附加
  • 非正常损失的原材料进项税额可以抵扣吗
  • 淘宝天猫开票是普票还是专票
  • 专用发票货物名称怎么填
  • 预缴增值税附加税
  • jquery vue.js
  • mongodb添加数据
  • 不可抵消
  • 营业税和营业税额一样吗
  • 金税四期对小规模企业有何要求
  • 为什么要缴纳保险
  • 印花税怎么用
  • 利息收入的会计分录
  • 报关金额必须和实收一样吗
  • 购入房产会计记账凭证怎么做
  • 固定资产相关业务
  • 补提当年折旧会计分录
  • 单位收走三方协议
  • 外账需要计提存利息吗
  • 公司的长期股权投资该如何做账
  • 餐饮赠券的会计分录
  • 应收票据及应收账款怎么算
  • 开公司合理避税的方法
  • 银行存款实际余额不足
  • win8开机logo
  • 新移动硬盘安装视频教程
  • windows7很卡
  • win7禁用administrator登录
  • win7打开文件夹都是独立的窗口
  • 打开安全启动
  • 如何禁用u盘启动项
  • win8的ie浏览器
  • js布尔类型用法
  • tab栏切换案例
  • unity de
  • bat 批处理文件
  • Android SDK Manager无法更新的解决方案
  • 江苏税务局开票在哪看的
  • 江苏无锡2023年GDP
  • 惠州市公交车投诉平台
  • 税务宣传标语2021
  • 辽宁房产税征收标准
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设