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

  • iqooz5有nfc和红外吗(iqoo5支持红外遥控吗)

    iqooz5有nfc和红外吗(iqoo5支持红外遥控吗)

  • 2021微信免密支付在哪里关闭(微信免密支付收费标准)

    2021微信免密支付在哪里关闭(微信免密支付收费标准)

  • 红米手机该怎样连接电脑(红米手机使用教程)

    红米手机该怎样连接电脑(红米手机使用教程)

  • 华为荣耀20青春版闪退(华为荣耀20青春版换屏幕多少钱)

    华为荣耀20青春版闪退(华为荣耀20青春版换屏幕多少钱)

  • ctrl加f是什么意思

    ctrl加f是什么意思

  • excel背景图片怎么设置(excel背景图片怎么设置平铺)

    excel背景图片怎么设置(excel背景图片怎么设置平铺)

  • 视频水印是什么意思(视频水印是什么意思?)

    视频水印是什么意思(视频水印是什么意思?)

  • 166开头的是什么号码(166开头的是什么快递)

    166开头的是什么号码(166开头的是什么快递)

  • 为什么抖音一个播放量都没有(为什么抖音一个人只能一个账号实名认证)

    为什么抖音一个播放量都没有(为什么抖音一个人只能一个账号实名认证)

  • 小米10电池可以用多久(小米10电池可以换8035毫安电池吗)

    小米10电池可以用多久(小米10电池可以换8035毫安电池吗)

  • pic什么意思(pic什么意思医学)

    pic什么意思(pic什么意思医学)

  • RS对应键盘哪个键(rs在键盘上是哪个按键)

    RS对应键盘哪个键(rs在键盘上是哪个按键)

  • 微信发送文件总是失败(微信发送文件总是变成(1))

    微信发送文件总是失败(微信发送文件总是变成(1))

  • 如果微信号封了里面的钱怎么办(如果微信号封了,手机号可以再申请吗?)

    如果微信号封了里面的钱怎么办(如果微信号封了,手机号可以再申请吗?)

  • 安卓怎么开热点(安卓怎么开热点给电脑)

    安卓怎么开热点(安卓怎么开热点给电脑)

  • ps文字怎么做金属效果(ps文字怎么做金属材质)

    ps文字怎么做金属效果(ps文字怎么做金属材质)

  • 京东等待收货还能退吗(京东一直等待收货)

    京东等待收货还能退吗(京东一直等待收货)

  • 怎样解除微信自动扣款(怎样解除微信自动扣费业务服务)

    怎样解除微信自动扣款(怎样解除微信自动扣费业务服务)

  • ps中文字加粗(ps文字加粗怎么不见了)

    ps中文字加粗(ps文字加粗怎么不见了)

  • 苹果手机微博下载的视频在哪里(苹果手机微博下载的文档怎么找)

    苹果手机微博下载的视频在哪里(苹果手机微博下载的文档怎么找)

  • 华为手环5怎么充电(华为手环5怎么开机)

    华为手环5怎么充电(华为手环5怎么开机)

  • 纳米手机膜怎么去掉(纳米手机膜怎么看像胶片一样)

    纳米手机膜怎么去掉(纳米手机膜怎么看像胶片一样)

  • 建融云服务是什么(建融云服务是什么公司)

    建融云服务是什么(建融云服务是什么公司)

  • 爱奇艺不显示在桌面怎么回事(爱奇艺不在桌面显示)

    爱奇艺不显示在桌面怎么回事(爱奇艺不在桌面显示)

  • play商店打不开白屏(google play商店打不开)

    play商店打不开白屏(google play商店打不开)

  • 微信闪退怎么办(苹果手机更新后微信闪退怎么办)

    微信闪退怎么办(苹果手机更新后微信闪退怎么办)

  • python怎么生成随机不重复数组(python怎么生成随机矩阵)

    python怎么生成随机不重复数组(python怎么生成随机矩阵)

  • 电费发票隔月开如何做账
  • 流转税率是什么意思
  • 契税减免税特殊规定有哪些?
  • 附加税减免税额不能大于本期应纳税额怎么办
  • 折旧费计算主要有几种方法?分别有什么特点?
  • 红字发票可以只开金额没有数量吗
  • 产权转移书据印花税分录
  • 月末计提工资金额怎么核算
  • 单位装修质保金扣留的会计处理
  • 采暖费报销发票
  • 企业转给法人的流程
  • 资源税是否需要计提?
  • 营改增后建筑企业财务核算
  • 开专票必须公对公付款不然不开
  • 企业亏损需要缴税吗
  • 常见的审计调整事项
  • 股东房产用于公司经营的是否交房产税
  • 维修税控设备分录
  • 固定资产折旧计算方法
  • 财会报告需要哪些证书
  • php的编辑工具有哪些
  • php怎么创建数据表
  • 若依框架介绍
  • 前端项目中遇到的最大困难,怎么解决的
  • 事业单位接受捐赠固定资产入账
  • php完整教程
  • 固定资产抵账的增值税
  • 其他应收款的会计处理
  • opencv如何使用
  • 定额发票已验旧是什么意思
  • 没有报税盘
  • 前端file对象
  • 员工旅游是什么意思
  • axios.defaults.baseURL的三种配置方法
  • 真正的出道仙谁来封
  • 第十章光结局和夜结局
  • 命令行系统
  • php不同用户登录不同页面
  • 增值税农产品免税是哪一条
  • 小规模纳税人是什么意思
  • 企业会计准则对收入的定义
  • 预收账款需要申请吗
  • php注册功能
  • react生命周期执行顺序
  • 计提加计抵减额在财务报表里哪里体现
  • 民办学校建筑要求
  • 长期股权投资种类
  • 小规模纳税人的企业所得税怎么算
  • sql row_number()over()
  • 增值税现代服务业包括哪些内容
  • 货物或应税劳务名称怎么填
  • 商品流通企业的进货费用
  • CentOS 7.3上SQL Server vNext CTP 1.2安装教程
  • 营业外收入如何纳税
  • 预缴增值税需要提供什么资料
  • 含税金额和税额的关系
  • 研发费用 汇算清缴
  • 已提过5个月折旧要进行固定资产一次性扣除吗?
  • 库存商品暂估入库可以结转成本吗
  • 计提是好是坏
  • 法人章和财务章尺寸
  • 设置资产处置损益的依据
  • 从会计角度看会计刺客
  • 怎么开劳务派遣工作证明
  • 如何学会计做账视频
  • 建筑公司的会计好做吗
  • mysql拆表迁移数据
  • 无法安装mysql数据库
  • solaris init 0
  • [下载转存] 经验本题库源文件下载转存 秒结
  • win8怎么删除输入法
  • SQLite -- 嵌入式关系型数据库
  • opengl mc
  • 解决跨域的原理
  • javascript delete 使用示例代码
  • 经常用到的图像格式有
  • services的翻译
  • 税务稽查局稽查财务不在场怎么办
  • 技术服务费减免企业所得税政策
  • 深圳市国家税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设