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

  • 腾讯视频怎么更换主设备(腾讯视频怎么更换主设备登录)

    腾讯视频怎么更换主设备(腾讯视频怎么更换主设备登录)

  • iphone锁屏突然变虚化(苹果锁屏突然变了)

    iphone锁屏突然变虚化(苹果锁屏突然变了)

  • 手机格式化了没有备份怎么办(手机格式化了没法激活怎么办)

    手机格式化了没有备份怎么办(手机格式化了没法激活怎么办)

  • 苹果手机看抖音发烫(苹果手机看抖音模糊是什么原因)

    苹果手机看抖音发烫(苹果手机看抖音模糊是什么原因)

  • 海信安装当贝市场无法安装(海信安装当贝市场不用优盘)

    海信安装当贝市场无法安装(海信安装当贝市场不用优盘)

  • iphone11屏幕显示不全(iPhone11屏幕显示尺寸)

    iphone11屏幕显示不全(iPhone11屏幕显示尺寸)

  • 华为荣耀9x为什么没有耳机(华为荣耀9X为什么前置摄像头随时都是提醒收起摄像头)

    华为荣耀9x为什么没有耳机(华为荣耀9X为什么前置摄像头随时都是提醒收起摄像头)

  • 微信怎么面部识别登录(微信怎么面部识别付款怎么没有呢)

    微信怎么面部识别登录(微信怎么面部识别付款怎么没有呢)

  • mate30和pro区别(华为mate30和pro系列的区别)

    mate30和pro区别(华为mate30和pro系列的区别)

  • 苹果原相机自拍脸为什么是歪的(苹果原相机自拍鼻子为什么是斜的)

    苹果原相机自拍脸为什么是歪的(苹果原相机自拍鼻子为什么是斜的)

  • 显示器的主要技术指标之一是什么(显示器的主要技术之一是)

    显示器的主要技术指标之一是什么(显示器的主要技术之一是)

  • 小米京东自营旗舰店和官网有啥区别(小米京东自营旗舰店手机是正品吗)

    小米京东自营旗舰店和官网有啥区别(小米京东自营旗舰店手机是正品吗)

  • 关注公众号对方知道吗(关注公众号对方会得到你的什么信息)

    关注公众号对方知道吗(关注公众号对方会得到你的什么信息)

  • 华为mate30支持双卡双待吗(华为mate30支持双卡5g吗)

    华为mate30支持双卡双待吗(华为mate30支持双卡5g吗)

  • 如何退出抖音喜欢作品(咋样取消抖音喜欢)

    如何退出抖音喜欢作品(咋样取消抖音喜欢)

  • 苹果11怎么使用自己的铃声(苹果11怎么使用nfc坐地铁)

    苹果11怎么使用自己的铃声(苹果11怎么使用nfc坐地铁)

  • 为什么不能取消优享预定(为什么不能取消英语)

    为什么不能取消优享预定(为什么不能取消英语)

  • 探探好友恢复安全在哪(探探好友删除了怎么找回来)

    探探好友恢复安全在哪(探探好友删除了怎么找回来)

  • 屏幕划痕贴膜能盖住吗(屏幕划痕贴膜能解决吗)

    屏幕划痕贴膜能盖住吗(屏幕划痕贴膜能解决吗)

  • 微型计算机硬件系统的性能主要取决于(微型计算机硬件系统由哪两大部分)

    微型计算机硬件系统的性能主要取决于(微型计算机硬件系统由哪两大部分)

  • dns是什么协议(dns是什么协议类型)

    dns是什么协议(dns是什么协议类型)

  • 银行电子回单有没有法律效应
  • 小规模纳税人减按1%如何填报申报表
  • 其他应收款和其他应付款可以通用吗
  • 工会活动奖励现金怎么入账
  • 开增值税发票规格是否可以不用填
  • 暂估入库可以跨年吗
  • 未经过他人同意贷款怎么处理
  • 审核发票的要点和方法
  • 母子公司间资产划拨开免税发票
  • 存货周转率 高
  • 收购其他公司有什么好处
  • 银行付款退汇怎么做账
  • 自产产品销售增值税
  • 金税盘忘记清卡了
  • 软件服务类企业
  • 营增改的四大“增效剂”
  • 软件企业的税收优惠政策
  • 纳税人证明是完税证明吗
  • 委托研发受托方怎么做账
  • 交强险 收费
  • 废旧物资缴纳增值税政策
  • 建筑业预交增值税最新政策
  • 核定征收的企业利润怎么处理
  • 找果农采购水果没有发票怎么办
  • 前期投资费用怎么做账
  • 企业所得税季度申报表季度平均值
  • 员工出差时法律规定
  • 商会收到的会费要交企业所得税
  • 企业清算所得税申报
  • 对视同销售行为应如何进行税务处理
  • 育空怀特霍斯附近的北极光,加拿大 (© Design Pics/Danita Delimont)
  • php __destruct
  • PHP:imagegrabscreen()的用法_GD库图像处理函数
  • 当月已验旧的发票怎么开
  • 房产税为什么会退税
  • 通过云服务器租号安全吗
  • vue全家桶的app项目代码
  • php获取当前文件夹
  • php判断链表是否有环
  • 固定资产类别有哪些
  • 所有者权益总计怎么算沙盘
  • 金税盘到上传截止日期
  • 租赁房产税如何交税
  • 其他综合收益什么情况下转入留存收益
  • 上一年度的费用退回清算表怎么填
  • 在线客服系统登录
  • 帝国cms简介标签
  • 运费计入什么会计分录
  • seacms error怎么办
  • 工程施工会计科目是什么科目
  • 现金流量表年报本期金额和上期金额
  • 基于stm32的毕业设计
  • 企业减少注册资本
  • 进项税额转出和红字冲销区别
  • 收到退回留抵退税
  • 分红股份会减少吗
  • 合并报表非同控为什么调公允
  • 银行扣款能撤回吗
  • 汇算清缴前取得发票可以税前扣除吗
  • 不动产经营租赁会计分录
  • 开户一定要去银行吗
  • 如何理解现金折扣
  • 配置零部件
  • mysql查询慢的优化方案
  • w10语言栏
  • win10一年更新一次
  • ctfmon.exe成功怎么解决
  • win8系统升级
  • win8自动进入桌面
  • win8怎么更新到win8.1
  • CCAssert(sm_pSharedApplication, "")导致程序闪退的原因以及解决方案
  • Cocos2dx3.2 Crazy Tetris 绘制不规则方块 遮罩(ClippingNode的使用)
  • javascript基础入门教程
  • c#委托的理解
  • js响应事件的过程
  • 如何使用wordpress
  • 福州市税务局领导班子成员名单
  • a级纳税人和一级的区别
  • 12366是哪里的税务局
  • 广东省地方税务局公告2017年第6号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设