vuex根据不同的用户权限展示不同的路由列表功能


Posted in Javascript onSeptember 20, 2019

需求描述

最近接到一个新的需求,要求将系统的用户进行分类,用户登陆后根据不同的用户权限展示不同的功能列表。

这个功能在后台管理中很常见,大致的思路是

后台返回用户类型,前端根据用户类型生成该类用户可以访问的功能列表。
后台返回功能列表,前端进行循环渲染。

一个在前端生成功能列表,一个在后端返回,两个本质上类似,最终都是需要得到一个该用户的功能功能列表。但是两者都有一个不可忽视的东西,就是如果用户直接在地址栏输入会怎么样。

技术选型

由于公司项目不算小,为了后期维护方便,我还是选择了使用 vuex 完成上述的功能。

主要想法为在vuex中保存用户登陆后的状态,以及用户可访问的路由列表,这样的话,不涉及到父子组件间的数据传递,可以很方便的在单个组件中获取到用户的权限路由列表。

Vuex

如果只是想简单的使用一个vuex,了解state,mutation,action就足够你使用

在src文件夹下,创建一个store文件夹,如果项目简单,可以将state,mutations,actions,getters等写入到一个文件中

vuex根据不同的用户权限展示不同的路由列表功能 

主要代码很简单,只需要导入Vue,Vuex,并且调用Vue.use(Vuex)。

结合官方解释的个人理解,一个vuex文件就是一个仓库,它包含着你需要共享的变量、有关的事件、以及可以执行这些事件的行为,我们把这些导出去,在单个组件中引入,我们便可以在单个组件中对共享的变量进行改变。

import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
export default new Vuex.Store({
state
})

state

state主要功能是用来定义变量,代表你需要共享的一个状态。比如,我想要共享用户可以访问的路由列表,所以,我需要先在state中定义一个存放路由列表的变量。

store/index.js中

import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const state = {  
  pressionList: [],//用户允许登陆的路由列表
  loginTag:false//用户登陆状态 
}
export default new Vuex.Store({
state
})

单个组件中使用state,有两种方法,直接获取,或者使用mapState辅助工具

总结

以上所述是小编给大家介绍的vuex根据不同的用户权限展示不同的路由列表功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
html读出文本文件内容
Jan 22 Javascript
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
Apr 02 Javascript
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
Jul 26 Javascript
js实现弹窗插件功能实例代码分享
Dec 12 Javascript
运用jQuery定时器的原理实现banner图片切换
Oct 22 Javascript
跟我学习javascript解决异步编程异常方案
Nov 23 Javascript
javascript作用域、作用域链(菜鸟必看)
Jun 16 Javascript
原生js图片轮播效果实现代码
Oct 19 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
Jun 13 Javascript
在Vue中使用echarts的实例代码(3种图)
Jul 10 Javascript
jQuery实现页码跳转式动态数据分页
Dec 31 jQuery
vue实现登录后页面跳转到之前页面
Jan 07 Javascript
微信小程序如何播放腾讯视频的实现
Sep 20 #Javascript
Vue+iview+webpack ie浏览器兼容简单处理
Sep 20 #Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
Sep 20 #Javascript
微信用户访问小程序的登录过程详解
Sep 20 #Javascript
解决layUI的页面显示不全的问题
Sep 20 #Javascript
小程序如何获取多个formId实现详解
Sep 20 #Javascript
SSM+layUI 根据登录信息显示不同的页面方法
Sep 20 #Javascript
You might like
论建造顺序的重要性
2020/03/04 星际争霸
PHP新手上路(六)
2006/10/09 PHP
经典的PHPer为什么被认为是草根?
2007/04/02 PHP
php实现mysql数据库备份类
2008/03/20 PHP
PHP用SAX解析XML的实现代码与问题分析
2011/08/22 PHP
php中一个完整表单处理实现代码
2011/11/10 PHP
php 不使用js实现页面跳转
2014/02/11 PHP
php+ajax实现无刷新分页的方法
2014/11/04 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
ExtJS 2.2.1的grid控件在ie6中的显示问题
2009/05/04 Javascript
浅析js中2个等号与3个等号的区别
2013/08/06 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
2016/12/23 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
2017/02/10 Javascript
bootstrap IE8 兼容性处理
2017/03/22 Javascript
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
详解vue-cli开发环境跨域问题解决方案
2017/06/06 Javascript
用js将long型数据转换成date型或datetime型的实例
2017/07/03 Javascript
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
vue学习之mintui picker选择器实现省市二级联动示例
2017/10/12 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
Vue路由管理器Vue-router的使用方法详解
2020/02/05 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
2021/01/29 Javascript
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
2013/01/17 Python
Django vue前后端分离整合过程解析
2020/11/20 Python
Forever 21美国官网:美国标志性快时尚品牌
2017/02/20 全球购物
Delphi软件工程师试题
2013/01/29 面试题
办公室文员工作职责
2014/01/31 职场文书
中学教师请假制度
2014/02/03 职场文书
出生医学证明书
2014/09/15 职场文书
中秋节寄语2015
2015/03/24 职场文书
mysql死锁和分库分表问题详解
2021/04/16 MySQL