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

  • 红米g2021重量(红米g2021amd)

    红米g2021重量(红米g2021amd)

  • 荣耀20Pro老是自动关机怎么回事(荣耀20pro老是自动关机怎么办)

    荣耀20Pro老是自动关机怎么回事(荣耀20pro老是自动关机怎么办)

  • 快手双击过的突然没了(快手双击过 又取消还能在动态看到吗)

    快手双击过的突然没了(快手双击过 又取消还能在动态看到吗)

  • qq语音放不出来(qq语音播放不了怎么回事)

    qq语音放不出来(qq语音播放不了怎么回事)

  • dc12v可以接220v的电吗(dc12v怎么接电源)

    dc12v可以接220v的电吗(dc12v怎么接电源)

  • 华为手机悬浮球怎么设置功能(华为手机悬浮球怎么去掉)

    华为手机悬浮球怎么设置功能(华为手机悬浮球怎么去掉)

  • 为什么华为手机插耳机没有声音(为什么华为手机屏幕变成黑白色)

    为什么华为手机插耳机没有声音(为什么华为手机屏幕变成黑白色)

  • 平板删除照片苹果手机还有吗(平板删除照片苹果怎么删)

    平板删除照片苹果手机还有吗(平板删除照片苹果怎么删)

  • 三星s8十怎么截屏(三星s8十怎么截图)

    三星s8十怎么截屏(三星s8十怎么截图)

  • 杜克测距仪怎么设置米(杜克测距仪怎么使用)

    杜克测距仪怎么设置米(杜克测距仪怎么使用)

  • 微信数据可以清理吗(微信数据清除会损失哪些东西)

    微信数据可以清理吗(微信数据清除会损失哪些东西)

  • 苹果11pro max充电85%就充不进去怎么回事(苹果11promax充电发烫怎么回事)

    苹果11pro max充电85%就充不进去怎么回事(苹果11promax充电发烫怎么回事)

  • iphonexr拍照不清晰怎么设置(iphonexr拍照模糊)

    iphonexr拍照不清晰怎么设置(iphonexr拍照模糊)

  • 电信显示lte什么意思(电信网络lte)

    电信显示lte什么意思(电信网络lte)

  • 1t加256固态什么意思(1t固态和256固态+1t的区别)

    1t加256固态什么意思(1t固态和256固态+1t的区别)

  • 北京阿里通信是什么(阿里通信官方)

    北京阿里通信是什么(阿里通信官方)

  • 华为p30怎么拍广角(华为p30拍广角怎么拍)

    华为p30怎么拍广角(华为p30拍广角怎么拍)

  • 手机如何强制重启(手机如何强制重置系统)

    手机如何强制重启(手机如何强制重置系统)

  • qq怎么打开礼物收益(QQ怎么打开礼物背包)

    qq怎么打开礼物收益(QQ怎么打开礼物背包)

  • 电脑兼容性在哪里调整(电脑兼容性在哪里找到)

    电脑兼容性在哪里调整(电脑兼容性在哪里找到)

  • 淘宝问大家怎么不显示(淘宝问大家怎么回答问题)

    淘宝问大家怎么不显示(淘宝问大家怎么回答问题)

  • 苹果11后面是什么材质(苹果11后面是什么系列)

    苹果11后面是什么材质(苹果11后面是什么系列)

  • 苹果移动数据开关在哪(苹果移动数据开关图标不能点)

    苹果移动数据开关在哪(苹果移动数据开关图标不能点)

  • 订单和定单那个可以退(订单和定金的区别)

    订单和定单那个可以退(订单和定金的区别)

  • iphone应用与数据在哪里(iphone应用数据迁移)

    iphone应用与数据在哪里(iphone应用数据迁移)

  • 通话中断痕迹怎么删除(通话中断怎么恢复)

    通话中断痕迹怎么删除(通话中断怎么恢复)

  • oppoa9的电池容量(oppoa9电池容量多大毫安)

    oppoa9的电池容量(oppoa9电池容量多大毫安)

  • 手机app开发有哪些盈利模式(手机app开发有哪几种方法)

    手机app开发有哪些盈利模式(手机app开发有哪几种方法)

  • 如何在ppt中加入文件链接(如何在ppt中加入自定义按钮)

    如何在ppt中加入文件链接(如何在ppt中加入自定义按钮)

  • 所得税退税的会计处理方法
  • 公司收到劳务发票怎么申报个税
  • 本年利润怎么结转分录
  • 外聘人员需要申报个税吗
  • 子公司利润母公司要交税吗?
  • 财政补贴交不交印花税
  • 个体工商户发票额度
  • 人民币报关出口跨境
  • 施工企业挂靠账务处理怎么做
  • 购买的发票进项税和成本怎么转出
  • 未认证的进项也就是库存
  • 营改增后企业缴税种类
  • 企业买卖股票应注意事项
  • 所有者权益减少资产减少案例
  • 增值税先征后退属于政府补助吗
  • 企业的不征税收入用于支出所形成的资产
  • 固定资产审计目标
  • 读会计没有考到证 能出来干什么
  • 外贸公司要计提什么费用
  • 苹果电脑如何查看内存大小
  • 收据入账会计分录
  • win11资源管理器怎么打开
  • macOSCatalina10.15.5正式版值得升级吗 macOSCatalina10.15.5更新了什么
  • 产品分仓
  • h5适配iphonex
  • 提高stable diffusion速度
  • 转销坏账准备的会计分录有一个还是两个
  • 金蝶财务软件总监是谁
  • vue–router
  • 货真价实的话
  • php二维数组foreach
  • 现代服务印花税税率
  • viite
  • react context优化四重奏教程示例
  • python中循环怎么写
  • 发票可以开未来日期吗
  • 企业向个人提供分期的商业活动属于
  • 企业开办期间费用需要开发票吗
  • 非货币性职工薪酬
  • 税务登记如何办理
  • 小额贷款公司如何做账
  • 差旅费报销时如何处理
  • 清洁费用属于哪个会计科目
  • 对增值税发票开具方面有何要求?
  • 主营业务收入的明细科目怎么写
  • 出口佣金账务处理
  • 跨月开票的业务怎么做
  • 行政事业单位应用方案总账,财务分析
  • 包装成本核算的主要内容
  • 企业每月利润多少合适
  • 红字冲账的记账凭证
  • 总资产报酬率的公式
  • 公司无偿更换产品违法吗
  • 政府补贴收入确认政策
  • 汽车贷款利息计算公式计算器
  • 新准则下企业开什么发票
  • sql2005 HashBytes 加密函数
  • mysql数据库简单介绍
  • wp_official_1.1.3.apk软件下载
  • xp软件自动启动
  • debian怎么开启端口
  • 硬盘分区win7怎么扩充c盘
  • centos创建一个文件
  • win7电脑显示屏显示不全怎么调整
  • Linux怎么在家目录创建目录
  • Android 中的guideline
  • unity导出exe文件
  • jquery 随机函数
  • jquery 获取json的key
  • CSS expression控制图片自动缩放效果代码[兼容 IE,Firefox]
  • python pickle 保存
  • 用javascript写简单网页
  • python xml.dom.minidom模块生成xml
  • android:padding="10dp"
  • js中!
  • 梦见擦窗户框
  • 税务分享风险如何解决
  • 咨询服务合同属于购销合同吗
  • 医保可以直接到税局买吗?
  • 河北地税网上申报纳税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设