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

  • ilife扫地机器人评测(ilife 11)(ilife扫地机器人售后服务电话)

    ilife扫地机器人评测(ilife 11)(ilife扫地机器人售后服务电话)

  • 红米note11pro怎么恢复出厂设置(红米note11pro怎么开空调)

    红米note11pro怎么恢复出厂设置(红米note11pro怎么开空调)

  • 重启并更新以继续获得支持是什么意思(现在重启以继续获得支持怎么关掉)

    重启并更新以继续获得支持是什么意思(现在重启以继续获得支持怎么关掉)

  • qq邮箱无法登录(qq邮箱无法登录126邮箱)

    qq邮箱无法登录(qq邮箱无法登录126邮箱)

  • 禁用驱动签名是干嘛(禁用驱动签名是什么)

    禁用驱动签名是干嘛(禁用驱动签名是什么)

  • 106开头的短信是什么号码(106开头的短信是哪里发的)

    106开头的短信是什么号码(106开头的短信是哪里发的)

  • 华为p40微信分身怎么弄(华为P40微信分身怎么弄)

    华为p40微信分身怎么弄(华为P40微信分身怎么弄)

  • 苹果a1432是迷你几(a1432是迷你几)

    苹果a1432是迷你几(a1432是迷你几)

  • 手机QQ空间日志怎么设置权限(手机qq空间日志怎么批量删除)

    手机QQ空间日志怎么设置权限(手机qq空间日志怎么批量删除)

  • 目前世界上最大的计算机互联网是(目前世界上最大的动物是什么)

    目前世界上最大的计算机互联网是(目前世界上最大的动物是什么)

  • 手机qq共享屏幕对方听不到声音(手机qq共享屏幕看电影对方听不到声音)

    手机qq共享屏幕对方听不到声音(手机qq共享屏幕看电影对方听不到声音)

  • dx12需要自己开启吗(游戏开dx12和不开有什么效果)

    dx12需要自己开启吗(游戏开dx12和不开有什么效果)

  • 微信好友辅助注册一个月可以辅助多少个(微信好友辅助注册多久可以辅助一次)

    微信好友辅助注册一个月可以辅助多少个(微信好友辅助注册多久可以辅助一次)

  • 无损音乐刻录成CD有意义吗(无损音乐刻录成CD和U盘有区别吗)

    无损音乐刻录成CD有意义吗(无损音乐刻录成CD和U盘有区别吗)

  • 电脑突然打不了字是什么原因(电脑突然打不了数字是什么原因)

    电脑突然打不了字是什么原因(电脑突然打不了数字是什么原因)

  • 如何改华为手机锁屏时间(如何改华为手机下方的按键)

    如何改华为手机锁屏时间(如何改华为手机下方的按键)

  • 苹果7p有几种内存(苹果7plus有几种内存)

    苹果7p有几种内存(苹果7plus有几种内存)

  • qbasic是应用软件吗(qlab是什么软件)

    qbasic是应用软件吗(qlab是什么软件)

  • 微信语音通话按接听接不了(微信语音通话按钮)

    微信语音通话按接听接不了(微信语音通话按钮)

  • 苹果11什么时候出售(苹果11什么时候下架停产)

    苹果11什么时候出售(苹果11什么时候下架停产)

  • 有什么可以在家里做的兼职?(有什么可以在家赚钱的方法)

    有什么可以在家里做的兼职?(有什么可以在家赚钱的方法)

  • 抖音点不上关注怎么办(抖音明明点了关注等下又没了)

    抖音点不上关注怎么办(抖音明明点了关注等下又没了)

  • 怎样开启oppo查找手机位置的功能(oppo如何查询)

    怎样开启oppo查找手机位置的功能(oppo如何查询)

  • 网易新闻如何删除评论(网易新闻如何删除自己的跟帖)

    网易新闻如何删除评论(网易新闻如何删除自己的跟帖)

  • 附加税的税率表
  • 解聘补偿金赔偿标准2023
  • 个人服务费发票几个点
  • 出口货物不能退税的原因
  • 发票号码代码不合法
  • 怎么强调各个分公司之间无直接联系
  • 报税时提示缺少相关组件怎么解决
  • 出口无法收汇怎么办
  • 非货币性资产含义
  • 房产税开征范围中的城市
  • 公司租用房产税如何征收
  • 长期待摊费用计提摊销的会计分录
  • 最新工程施工会计处理流程
  • 样机销售是什么意思
  • 税务局返还的代征代扣要交增值税吗
  • 正规沙场需要缴纳税吗
  • 进项多销项少
  • 水利建设专项收入
  • 购进商品用于样品赠送的账务处理
  • 已抵扣的进项税额转出怎么做会计分录
  • 以前季度所得税表怎么作废
  • 小企业递延收益计算公式
  • 公司发的物品叫什么
  • 盈余公积转增实收资本要交税吗
  • 怎么访问海康硬盘录像机
  • 电信网络网速变快设置
  • 详解php比较操作过程
  • PHP:pg_send_execute()的用法_PostgreSQL函数
  • 什么是会计分录其一般表达形式是怎样的
  • windows 11 build 21996.1 dev
  • 外资企业出租房产税优惠
  • 计提城建税是在当月提吗
  • php 面向对象
  • Joomla调用系统自带编辑器的实现方法
  • php实现分页查询
  • 什么叫非侵入性装置
  • redis主从复制如何保证不丢失数据
  • 前端进阶教程
  • php数据库搭建
  • 物业公司的会计科目有哪些
  • 残疾人保障金计入哪个会计科目
  • 金税盘减免税款借方余额
  • 劳务派遣小规模开票几个点
  • 怎么能开公司
  • php注册功能
  • 公司认缴的钱可以动吗
  • 综合所得计税依据
  • 哪些收入需缴纳增值税
  • 发票报销原因
  • 印花税的缴纳
  • 交易性金融资产的账务处理
  • 水电费分割单能报销吗
  • 施工企业简易计税的依据
  • 一达通退税需要具备的条件?
  • 商业零售企业商品进销差价
  • sql语句基础题及答案
  • Windows下使用gccgo
  • mysql数据库的介绍
  • centos7搜索
  • win10mobile现在能干吗
  • crossfire.exe是什么
  • new folder.exe是什么
  • font system
  • 如何自定义wifi名称
  • Win10 build 10240有"启用快速启动"功能吗?如何开启和关闭这个功能?
  • windows执行bat脚本
  • js的正则表达式
  • node.js开发指南
  • android4.4w
  • javascript零基础学要学多久
  • 酷狗模拟器
  • shell脚本spawn
  • node.jsexpress
  • javascript编程语言
  • 对税务总局党组织的评价
  • 国家税务总局江西省国家税务局
  • 保定市国税局车管所所长
  • 20年灵活就业人员社保新标准
  • 国家税务总局网站登录入口官网
  • 增值税发票打印机怎么调整打印位置
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设