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

  • 小米12屏幕分辨率(小米12屏幕分辨率用调吗)

    小米12屏幕分辨率(小米12屏幕分辨率用调吗)

  • 我的常州怎么注册(我的常州怎么注册不了)

    我的常州怎么注册(我的常州怎么注册不了)

  • 秘乐短视频怎么注销账号(秘乐短视频怎么做任务)

    秘乐短视频怎么注销账号(秘乐短视频怎么做任务)

  • 优盘被洗衣机洗了还能用吗(优盘被洗衣机洗了里面东西都没有了)

    优盘被洗衣机洗了还能用吗(优盘被洗衣机洗了里面东西都没有了)

  • 通信助理漏话怎么关闭(通信助理漏话怎么取消)

    通信助理漏话怎么关闭(通信助理漏话怎么取消)

  • 三星手机质保期多长(三星手机质保期内怎么维修)

    三星手机质保期多长(三星手机质保期内怎么维修)

  • 一代笔怎么充电(ipad10一代笔怎么充电)

    一代笔怎么充电(ipad10一代笔怎么充电)

  • 微信的账号密码在哪里可以看到(微信的账号密码在哪个文件夹里)

    微信的账号密码在哪里可以看到(微信的账号密码在哪个文件夹里)

  • 华为mate30pro有哪几款颜色(华为mate30pro有哪些不一样的功能)

    华为mate30pro有哪几款颜色(华为mate30pro有哪些不一样的功能)

  • 华为手机黑屏怎么修复(华为手机黑屏怎么导出数据)

    华为手机黑屏怎么修复(华为手机黑屏怎么导出数据)

  • 自媒体有哪些平台?(自媒体有哪些平台可以做)

    自媒体有哪些平台?(自媒体有哪些平台可以做)

  • 华为用的什么基带(华为用的什么基带接口)

    华为用的什么基带(华为用的什么基带接口)

  • 华为nova5pro耳机设置教程(华为nova5pro耳机孔在哪里怎么插)

    华为nova5pro耳机设置教程(华为nova5pro耳机孔在哪里怎么插)

  • 华为手机怎么调整震动频率(华为手机怎么调时间和日期)

    华为手机怎么调整震动频率(华为手机怎么调时间和日期)

  • 微信投票被限制怎么办(微信投票限制地区怎么办)

    微信投票被限制怎么办(微信投票限制地区怎么办)

  • 钉钉查看自己入职时间(钉钉怎么看入职)

    钉钉查看自己入职时间(钉钉怎么看入职)

  • 华为屏幕一下亮一下暗(华为屏幕一亮 突然开不起机)

    华为屏幕一下亮一下暗(华为屏幕一亮 突然开不起机)

  • 打印机常见问题处理(打印机怎么选择)

    打印机常见问题处理(打印机怎么选择)

  • 怎么取消手机来电名称(怎么取消手机来电视频铃声)

    怎么取消手机来电名称(怎么取消手机来电视频铃声)

  • redmi耳机无法并联(红米耳机无法串联怎么办)

    redmi耳机无法并联(红米耳机无法串联怎么办)

  • 短信怎么退出亲情号码(短信怎么退出亲情号)

    短信怎么退出亲情号码(短信怎么退出亲情号)

  • 双核处理器和四核处理器的区别(双核处理器和四核的区别)

    双核处理器和四核处理器的区别(双核处理器和四核的区别)

  • etc怎么充值 工商银行(etc怎么充值啊)

    etc怎么充值 工商银行(etc怎么充值啊)

  • 抖音怎么批量删除点赞(抖音怎么批量删除作品)

    抖音怎么批量删除点赞(抖音怎么批量删除作品)

  • 黑白相间的腰带盖洛韦牛,苏格兰 (© JohnFScott/Getty Images)(黑白相间表带)

    黑白相间的腰带盖洛韦牛,苏格兰 (© JohnFScott/Getty Images)(黑白相间表带)

  • 如何利用ChatGPT搞科研?(如何利用数据有效性制作单元格菜单)

    如何利用ChatGPT搞科研?(如何利用数据有效性制作单元格菜单)

  • 使用el-upload组件实现递归多文件上传(elementui的upload组件详解)

    使用el-upload组件实现递归多文件上传(elementui的upload组件详解)

  • 企业取得被投资单位的长期股权可以享有
  • 分公司承担总公司差旅
  • 红字发票开错了已上传如何作废
  • 营改增抵减的销项税额是什么意思
  • 低值易耗品库存
  • 增值税和实际缴税不符
  • 提取职工福利费计入什么科目
  • 固定资产预计净残值最后怎么处理
  • 公司汽车车险抵税多少
  • 发票联丢失能用抵扣联入账吗
  • 营改增后水费差额征税账务处理怎么做?
  • 城建税漏报怎么办
  • 不得抵扣且未抵扣什么意思
  • 减半征收城建税文件
  • 其他劳务包括什么内容?
  • 企业收到票据时应以什么入账
  • 应收账款及票据
  • 统一社会信用代码证
  • 购买法下购买成本包括
  • 公司向个人购买服务
  • 公司职员培训与管理
  • 个税退手续费要多久到账
  • 企业计提的坏帐会计分录
  • 准备购买材料会计分录
  • 内置管理员无法激活此应用
  • 初学者如何
  • PHP:session_unregister()的用法_Session函数
  • linux系统中文输入法切换不出来
  • oppor11s输入法怎么清除记忆
  • torch.save用法
  • php获取指定日期的时间戳
  • 专家评审费可以由中标人支付吗
  • thinkphp demo
  • windows. location
  • web实训报告怎么写
  • 一个惊艳了
  • 防洪费属于税金及附加吗
  • 劳务费发票是不是专票
  • 销售黄金的会计分录
  • php压缩文件怎么打开
  • mysql导出结果
  • 房地产城建税计税依据
  • 哪些费用专票是免税的
  • 应交税费在借方怎么调平
  • 存货出入库需要什么凭证
  • 专用发票超过360天未认证
  • 公司不可以销售车辆吗
  • 销售返利冲抵货款怎么做账
  • 电梯改造税率
  • 如果企业长期股票怎么办
  • 预付工程款该怎么记账
  • 进项认证怎么算
  • 咨询费如何缴税
  • 建筑业外包工程包括哪些
  • 利息支出税前扣除的规定
  • 外经证核销反馈表写错了怎么办
  • 通过MySQL优化Discuz!的热帖翻页的技巧
  • mysql压缩包安装教程5.7.32
  • winserver2008开机启动
  • 打开电脑windows
  • 电脑win7怎么样
  • win7系统修复工具在哪
  • xp系统鼠标右键无法弹出菜单
  • macos finder的应用程序列表在哪里
  • windows10新功能
  • sbserv.exe - sbserv是什么进程 有什么用
  • win10个性化颜色在开始任务栏选不了
  • opengl mesa
  • js domcontentloaded
  • 关闭默认共享和共享文件夹
  • 用python做逻辑回归
  • jquery多级菜单
  • javascript运用
  • 基于javascript的毕业设计选题
  • 总分机构在同一县城企业所得税需要预交吗
  • 税务人的形象
  • 诺诺发票怎样上报汇总
  • 广西国家税务局于红林
  • 宁波国税发票查询
  • 实收资本印花税税率多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设