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

  • win10设备管理器在哪(win10设备管理器一直在刷新)

    win10设备管理器在哪(win10设备管理器一直在刷新)

  • qq怎么弄情侣空间(qq怎么弄情侣空间不显示)

    qq怎么弄情侣空间(qq怎么弄情侣空间不显示)

  • qq运动群友头像不正常显示(qq运动头像图片公众号)

    qq运动群友头像不正常显示(qq运动头像图片公众号)

  • qq能恢复聊天记录吗(qq恢复聊天记录的软件免费版)

    qq能恢复聊天记录吗(qq恢复聊天记录的软件免费版)

  • 石墨烯电池第一次充电需要多久(石墨烯电池第一次充电没充满能骑吗)

    石墨烯电池第一次充电需要多久(石墨烯电池第一次充电没充满能骑吗)

  • 华为nova4e找不到录屏(华为nova4e找不到智能辅助栏)

    华为nova4e找不到录屏(华为nova4e找不到智能辅助栏)

  • xp系统开机无桌面图标

    xp系统开机无桌面图标

  • 苹果ld锁定是什么意思(苹果ld锁定什么意思)

    苹果ld锁定是什么意思(苹果ld锁定什么意思)

  • 关闭桌面窗口的快捷键(关闭桌面窗口的快捷方式)

    关闭桌面窗口的快捷键(关闭桌面窗口的快捷方式)

  • qq电话闭麦对方看得见吗(qq电话闭麦对方听得见媒体声音吗)

    qq电话闭麦对方看得见吗(qq电话闭麦对方听得见媒体声音吗)

  • 个人公众号每天只能发一篇吗(个人公众号每天可以发布多少文章)

    个人公众号每天只能发一篇吗(个人公众号每天可以发布多少文章)

  • qq群怎么打电话所有人(QQ群怎么打电话?)

    qq群怎么打电话所有人(QQ群怎么打电话?)

  • qq远程在哪里打开(qq远程在哪里打开手机)

    qq远程在哪里打开(qq远程在哪里打开手机)

  • mac地址通常储存在(MAC地址通常储存在计算机的)

    mac地址通常储存在(MAC地址通常储存在计算机的)

  • mpgw2ch a是ipad几(mpgw2ch/a是ipad5代)

    mpgw2ch a是ipad几(mpgw2ch/a是ipad5代)

  • 付款码被别人扫了怎么办(付款码被别人扫了能找回吗)

    付款码被别人扫了怎么办(付款码被别人扫了能找回吗)

  • 小米手表支持华为手机吗(小米手表支持华为手机的超级终端吗)

    小米手表支持华为手机吗(小米手表支持华为手机的超级终端吗)

  • 快手超级管理员有几个(快手超级管理员怎么设置)

    快手超级管理员有几个(快手超级管理员怎么设置)

  • tplogincn初始密码是多少(tplogincn密码多少)

    tplogincn初始密码是多少(tplogincn密码多少)

  • ios怎么降级系统(苹果ios如何降级)

    ios怎么降级系统(苹果ios如何降级)

  • 手机丢失怎么找回通讯录(手机丢失怎么找回抖音账号)

    手机丢失怎么找回通讯录(手机丢失怎么找回抖音账号)

  • vue添加字幕方法介绍(vue怎么添加滚动字幕)

    vue添加字幕方法介绍(vue怎么添加滚动字幕)

  • 抖音昵称能修改几次(怎样添加抖音号)

    抖音昵称能修改几次(怎样添加抖音号)

  • airpods可以用29w快充(airpods可以用教育优惠吗)

    airpods可以用29w快充(airpods可以用教育优惠吗)

  • 小米9收音机在哪(小米9收音机在哪里打开)

    小米9收音机在哪(小米9收音机在哪里打开)

  • 麒麟980和麒麟990有什么区别(麒麟980和麒麟990哪个好)

    麒麟980和麒麟990有什么区别(麒麟980和麒麟990哪个好)

  • 小米mee7s是什么型号(小米型号mee7)

    小米mee7s是什么型号(小米型号mee7)

  • 华为桌面图标怎么恢复原状(华为桌面图标怎么移动位置)

    华为桌面图标怎么恢复原状(华为桌面图标怎么移动位置)

  • 小米6x怎么插耳机(小米6x插耳机没反应)

    小米6x怎么插耳机(小米6x插耳机没反应)

  • Win10如何解决重启后桌面图标重新排列(win10重启按什么键重置)

    Win10如何解决重启后桌面图标重新排列(win10重启按什么键重置)

  • 劳务公司发放农民工工资要开发票吗?
  • 纳税申报表申报日期
  • 税控盘没有清卡,反写怎么办
  • 税金及附加包括印花税吗
  • 员工拓展活动方案范文
  • 税控服务费抵税
  • 纳税总额和实际上缴税费总额
  • 工商年检股东变更流程
  • 下列支出不可以从其应纳税所得额中扣除的是
  • 交易性金融资产的交易费用计入哪里
  • 企业取得的财政补贴收入是否缴纳增值税
  • 其他综合收益的税后净额怎么计算
  • 实收资本退还
  • 福利费可以用什么科目
  • 事业单位需要写自传吗
  • 劳务报酬个人所得税怎么计算
  • 小规模纳税人开具增值税专用发票
  • 营业外支出用什么账户
  • 调整期初数怎么做会计分录
  • 增资印花税税目
  • 预提企业所得税税额怎么计算
  • 收到应收票据应该确认收入吗
  • 其他应付款调整到其他应收款
  • office已经激活
  • php循环结构有哪几种语句
  • win7系统网络连接出现红叉
  • linux is
  • 投资性房地产转换日公允价值大于账面价值
  • 支付挂靠方的管理费用有进项吗?
  • 哈勃太空望远镜取得的部分成果有哪些
  • 新闻发布管理系统
  • php页面刷新代码
  • php文件怎么写
  • php正则匹配时间
  • 机器学习中的数学——距离定义(八):余弦距离(Cosine Distance)
  • 去年的所得税计提多了怎么做分录
  • 过路费发票抵扣2023新规定
  • 待核销基建支出并入哪个科目
  • 已收到货款 还未发货的会计处理
  • 新注册企业实收资本没到账怎么处理
  • 代发工资的账务处理需要什么资料
  • 公司房租收据怎么写
  • 账上没有实收资本
  • 酒店行业销售费用占比
  • 异地托收承付结算ppt
  • 关于sqlserver数据库服务器登录账户的说法错误的是
  • 应交税费明细科目设置最新
  • 人工费支付协议
  • 卖废品收入计入需要交税吗
  • 购车贷款分期利率
  • 收到银行电子汇票已入账怎么做账
  • 赠送商品入什么科目
  • 外国常驻代表机构经费支出范围
  • 长期待摊费用待抵扣税金
  • 增值税专用设备是什么
  • 住宿发票抵税
  • 购买税控盘费用能全额抵扣吗
  • 多交的社保退回多久能到账
  • 固定资产盘盈盘亏的会计科目
  • sql将一个数据库的表导入到另一个数据库
  • mysql指定查询
  • centos7 home
  • ubuntu 编译软件
  • 苹果14pro max价格
  • win8.1技巧
  • windows10周年更新
  • 怎么通过mac连接wifi
  • win8快速启动怎么开启
  • 怎么对js代码程序进行设计
  • android 界面滑动
  • cocos2dx 2.2.2
  • jq读取json
  • 了不起的女孩
  • jquery滚动条滚动到指定位置
  • three. js
  • jquery动画让div旋转
  • js设置页面的scrolltop
  • javascript面向对象 第三方类库
  • springmvc接收json需要配
  • javascript图表
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设