抖音资讯

douyinzx

vue动态菜单权限控制(vue权限管理菜单思路)

iseeyu2年前 (2024-05-07)抖音资讯117

权限管理主要体现在对菜单、操作、页面等权限的控制,实现根据用户权限来动态显示不同的导航菜单、操作权限及页面内容等功能。菜单的动态权限控制主要用到了Vue Router和Vuex这两个技术,前端的导航菜单一般都是根据Vue Router中定义的路由表来生成的,要实现动态菜单显示其实就是实现动态路由个过程。Vuex作为Vue中的状态管理器可以用来存储从Router中筛选出可访问的动态路由并改变Router的状态。

 

​路由表定义

通常情况下我们都是在src/router/index.js中来定义路由表的,路由通常分为两种,一种是常规的路由(静态路由表),这部分路由所有用户都可以访问,如登录、404错误、500服务器异常等页面。另一种是权限路由(动态路由表),这部分路由需要用户被授权才能访问,我们的动态路由也是根据这部分来做权限管理的。

 

获取用户权限

用户权限通常都是在服务器上存储的,我们在只有登录之后才能获取到用户的相关权限。数据的请求需要通过Token的认证,所以我们需要将Token存入Vuex和Cookie中让用户保持在线状态。接着我们就可以通过Token来获取用户的相关权限,这里不直接在登录的时候获取授权菜单是为了防止刷新路由,因为路由刷新的时候Vuex中存储的数据会丢失。

 

路由拦截筛选

既然是根据用户权限来显示菜单,那么在访问路由之前我们就需要先获取到用户可以访问的路由信息。既然不允许访问那么自然就不应出现在导航菜单中了,所以在路由加载完成之前我们就需要对路由进行筛选。这个可以利用Vue Router的钩子函数beforeEach来实现,在beforeEach通过Token获取授权菜单信息然后进行路由筛选。

 

await关键字

await是个关键字,即等待的意思。await只能放到async函数里面,async关键字定义的是一个异步函数。异步函数不会阻塞后面代码的继续执行,返回的是一个promise 对象。如果要获取到promise的返回值用then获取,await则是需要等异步函数执行完成并拿到promise resolve的值之后才会继续执行的。

 

await is a reserved word错误解决

这里在使用await的时候遇到一个错误:await is a reserved word,提示await是一个保留的关键词。遇到这个错误的时候你就要看下你使用的await函数是否是一个async异步函数了,这里是在beforeEach()参数中忘了加async关键字修饰了。

 

生成新路由

创建一个GenerateRoutes方法用来生成当前用户可以访问的新路由表,先通过GetInfo从后台获取到可以访问的权限列表,再通过filterAsyncRoutes去筛选出可以访问的动态路由,并将该路由存储到Vuex去改变routes的状态从而刷新出动态的导航菜单。

 

导航菜单渲染

在组件中载入Vuex中的mapGetters辅助函数可以直接调用state状态中的routes属性,我们将菜单组件和Vuex中存储的路由状态进行绑定起来,当routes发生变化的时候菜单也就跟着变化了。

 

总结:

这里有个问题需要注意那就是从用户端获取到的权限列表存储在Vuex中时如果用户刷新路由就会丢失,所以我们在beforeEach中最好先判断一下如果Vuex中的routes丢失我们就重新新请求一次后台重新获取下权限列表。我这里因为后台还没写对应的接口所以先在登录的时候将权限列表存储在Vuex的同时存了一份在Session Storage中,state值默认从Session Storage中获取(这种方式不安全,容易被用户篡改权限,所以最好不用)。以上内容是小编给大家分享的【Vue实战078:权限管理实现导航菜单动态加载】,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。

 

 

 

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/43054.html

相关文章

直播代运营合同避坑:报价、KPI、违约金一次说清

直播代运营合同避坑:报价、KPI、违约金一次说清

去年西安一家女装店老板拿着合同来找我看,就一页纸,上面写着“保证月销30万”。签的时候高高兴兴,三个月后只卖了8万,代运营公司一句“市场环境不好”就撒手不管了。老板想退钱,翻出合同才发现,什么叫销售额、含不含退款、考核多久、数据以谁为准,一个字都没写。这种坑我这两年见了不止十回。 直播代运营合同看...

抖音千川投放怎么投?2026新手起量避坑指南

抖音千川投放怎么投?2026新手起量避坑指南

西安一家做本地餐饮的老张,去年底听人说抖音能拉客,先充了3000块投DOU+。一个月下来,视频播放量是上去了,团购券没卖出几张。后来他才搞清楚,DOU+是给内容加热用的,真正能把团购券卖出去的工具叫巨量千川。2026年,在抖音上做生意的商家基本绕不开这两个东西:DOU+管内容热度,千川管成交转化。...

抖音短视频带货怎么做?2026年挂车出单实操指南

抖音短视频带货怎么做?2026年挂车出单实操指南

直播带货要开播、要人设、要话术,很多西安商家试了两次就放弃了。其实还有一条更轻的路:短视频带货。拍一条视频挂上商品链接,用户刷到直接下单,不用开播,不用连麦,一个人一部手机就能跑。我见过高新一家卖手工辣条的档口,老板就拍后厨炒料,一条视频爆了,挂车链接三天卖了四千多单。我自己也帮几个西安客户跑过这...

抖音矩阵号怎么做?2026年企业多账号布局实操

抖音矩阵号怎么做?2026年企业多账号布局实操

有个西安做门窗的老板跟我抱怨,说一个号发了大半年,播放量卡在一两千上不去,问我是不是号被限流了。我让他去搜搜本地同行,人家三个号轮着发,客户搜「西安封阳台」,翻两屏全是那一家。这不是玄学,就是矩阵。说白了,矩阵不是一个号发十遍,也不是开十个号复制粘贴,而是按客户会搜什么、信什么,把账号分工排好。尤...

抖音蹭热点总翻车?2026年商家追热点的正确姿势

抖音蹭热点总翻车?2026年商家追热点的正确姿势

上周有个做建材的老板问我:热搜上那个话题全网都在拍,我是不是也该跟一条?我反问他,拍完这条视频,客户凭什么找你买瓷砖?他愣了半天没答上来。这就是大多数商家蹭热点的真实状态——看见热点就冲,拍完发现除了播放量,什么都没留下。热点不是不能蹭,是大多数人都蹭错了。我盘过自己服务的客户数据:蹭热点视频的平...

企业抖音蓝V认证2026流程:材料准备与审核避坑

企业抖音蓝V认证2026流程:材料准备与审核避坑

企业号蓝V认证,现在几乎成了西安本地商家做抖音的起手式。不管是餐饮、装修、教育还是批发档口,想挂电话、想开团购、想投DOU+,基本都绕不开这一步。这篇文章把2026年最新的蓝V认证流程、要准备的材料、审核容易挂的地方一次讲清楚。蓝V认证到底有什么用?值不值600块蓝V说白了就是抖音给企业主体做的实...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片