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

  • 华为nova9怎么设置24小时(华为nova9怎么设置快充)

    华为nova9怎么设置24小时(华为nova9怎么设置快充)

  • 家里没wifi怎么使用小米音箱(家里没wifi怎么蹭网)

    家里没wifi怎么使用小米音箱(家里没wifi怎么蹭网)

  • vivo手机怎么添加分屏应用(vivo手机怎么添加公交卡)

    vivo手机怎么添加分屏应用(vivo手机怎么添加公交卡)

  • 微信号好久不登录就注销(微信号好久不登会怎么样)

    微信号好久不登录就注销(微信号好久不登会怎么样)

  • 抖音看别人定位准确吗(抖音看别人定位怎么关闭)

    抖音看别人定位准确吗(抖音看别人定位怎么关闭)

  • 为什么我的快手作品不能置顶(为什么我的快手作品播放量低)

    为什么我的快手作品不能置顶(为什么我的快手作品播放量低)

  • 微信朋友圈不发东西是怎么显示(微信朋友圈不发图片只发文字怎么弄)

    微信朋友圈不发东西是怎么显示(微信朋友圈不发图片只发文字怎么弄)

  • setup.exe无法安装

    setup.exe无法安装

  • 苹果电脑防水吗(苹果电脑防水等级)

    苹果电脑防水吗(苹果电脑防水等级)

  • 华为m6支持多屏协同吗(华为m6双屏怎么用)

    华为m6支持多屏协同吗(华为m6双屏怎么用)

  • iphone7plus外放声音小(iphone7plus外放声音小怎么解决)

    iphone7plus外放声音小(iphone7plus外放声音小怎么解决)

  • 毒虚假发货怎么处理(毒虚假发货会扣保证金吗)

    毒虚假发货怎么处理(毒虚假发货会扣保证金吗)

  • 苹果充电器头怎么看是不是原装(苹果充电器头怎么选)

    苹果充电器头怎么看是不是原装(苹果充电器头怎么选)

  • 微信绑定的手机号注销了微信还能用吗(微信绑定的手机号怎么解绑)

    微信绑定的手机号注销了微信还能用吗(微信绑定的手机号怎么解绑)

  • 苹果手机有秤的功能吗(苹果手机有称)

    苹果手机有秤的功能吗(苹果手机有称)

  • jkmal00b是什么手机(jkm-al00b是哪款手机)

    jkmal00b是什么手机(jkm-al00b是哪款手机)

  • 全民k歌本地录音在哪里找(全民K歌本地录音怎么分享)

    全民k歌本地录音在哪里找(全民K歌本地录音怎么分享)

  • 怎么查airpods是1还是2(怎么查AirPods是几代)

    怎么查airpods是1还是2(怎么查AirPods是几代)

  • 文件夹怎样按顺序排列(文件夹怎样按顺序排序)

    文件夹怎样按顺序排列(文件夹怎样按顺序排序)

  • 智慧团建姓名填错怎么修改(智慧团建姓名是曾用名)

    智慧团建姓名填错怎么修改(智慧团建姓名是曾用名)

  • 剪映多余的音乐怎么删除(剪映多余的音乐怎么分割不了)

    剪映多余的音乐怎么删除(剪映多余的音乐怎么分割不了)

  • 抖音如何上热门不用钱(抖音如何上热门可用,捧捧糖,新首码项目)

    抖音如何上热门不用钱(抖音如何上热门可用,捧捧糖,新首码项目)

  • 一加7pro用的什么屏幕(一加7pro用的什么充电协议)

    一加7pro用的什么屏幕(一加7pro用的什么充电协议)

  • 格力手机如何截屏(格力手机如何截屏操作)

    格力手机如何截屏(格力手机如何截屏操作)

  • 小v怎么打开(小v怎么打开视频)

    小v怎么打开(小v怎么打开视频)

  • 公司租的住宅和商品房
  • 什么是进项税和进项税
  • 一般纳税人增值税可以抵扣吗
  • 购销金额多少的情况下必须需要签合同?
  • 货物退回是什么意思
  • 住房租金专项附加
  • 小微企业季报
  • 买一送一的营销好处
  • 抵债资产涉税问题
  • 工业企业如何进行设备的选购管理
  • 土地增值税什么时候开始征收的
  • 没有营业收入要报税吗
  • 由于红字发票生成红字进项税转出如何做账?
  • 外贸业务收境外人民币
  • 从农民手中购买农产品税率
  • 为什么餐费不能计入在差旅费
  • 建筑安装业跨省经营管理税务通知
  • 主营业务收入怎么结转
  • 水利建设基金按什么基数计算
  • 红字冲回怎么做账
  • 汇总会计报表和合并会计报表均是
  • 实收资本未到位借款利息可以税前扣除吗
  • 水利建设基金从铁路建设基金港口建设费收入中提取5%
  • 公司自有房屋出租 营业范围
  • 如何彻底关闭电脑右下角弹窗
  • 中小企业的界定标准是什么
  • 电脑开不了机一直重启
  • 电路改造计入什么科目
  • 企业财务管理的对象是什么
  • 洛阿雷城堡,西班牙韦斯卡 (© Sebastian Wasek/Alamy)
  • 报错500是什么意思
  • 搜索神器官网
  • 没有资质证书的公司可靠吗?
  • 事业单位财产清查内容包括
  • 工程建设的项目的划分?
  • 多表关联join
  • 功能强大的词语
  • php判断用户是否登录
  • 出差补贴应该怎么入账
  • 公司购买承兑
  • 残疾基金出什么科目
  • 报销具体流程
  • 手工帐月末结转会计分录
  • 微信小程序分包中插件样式丢失
  • 收到现金股利或债券利息时会计分录怎么做
  • 土地租赁费属于什么收入
  • 空调能直接用水清洗不?
  • 房产税的征收范围和标准有哪些
  • 软件属于哪种无形资产
  • 2020年工资标准表
  • 促销有哪几个方面
  • 可以从公司公户直接支付给个人的款项有哪些
  • 百分百控股的企业
  • 体检费可以开个人吗?
  • 基金账户托管
  • 会务费入哪个科目
  • sqlserver使用方法
  • java程序怎么直接运行
  • mysqladmin ping
  • sqlserver获取当前年
  • win7安装sqlserver2005失败
  • ubuntu安装chia
  • mac双系统切换快捷键
  • mac 应用
  • 安装完win8后没有无线网络
  • hpdskflt.sys
  • 如何彻底删除超级QQ秀
  • win10系统怎么设置开机启动项
  • win 7关闭睡眠
  • win10如何安装office
  • bat for do
  • cocos2dx屏幕适配解决方案
  • shell脚本获取进程pid
  • unity 3d代码
  • python网络爬虫的流程图
  • javascript函数大全
  • jquery实现图片横向移动
  • 怎样把短信转发到微信
  • 双公开双反馈什么意思
  • 国税合并地税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设