我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vue2.0中怎么实现用户权限控制

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Vue2.0中怎么实现用户权限控制

这篇文章将为大家详细讲解有关Vue2.0中怎么实现用户权限控制,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

运行

//开发
npm run dev

//构建
npm build

概述

整体思路

会话开始之初,先初始化一个只有登录路由的Vue实例,在根组件created钩子里将路由定向到登录页,用户登录成功后前端拿到用户token,设置axios实例统一为请求headers添加{"Authorization":token}实现用户鉴权,然后获取当前用户的权限数据,主要包括路由权限和资源权限,之后动态添加路由,生成菜单,实现权限指令和全局权限验证方法,并为axios实例添加请求拦截器,至此完成权限控制初始化。动态加载路由后,路由组件将随之加载并渲染,而后展现前端界面。

为解决浏览器刷新路由重置的问题,拿到token后要将其保存到sessionStorage,根组件的created钩子负责检查本地是否已有token,如果有则无需登录直接用该token获取权限并初始化,如果token有效且当前路由有权访问,将加载路由组件并正确展现;若当前路由无权访问将按路由设置跳转404;如果token失效,后端应返回4xx状态码,前端统一为axios实例添加错误拦截器,遇到4xx状态码执行退出操作,清除sessionStorage数据并跳转到登录页,让用户重新登录。

最小依赖原则

Vue-Access-Control的定位是单一领域解决方案,除了Vue/Vue-Router/axios之外没有其他依赖,理论上可以无障碍的应用到任何有权限控制需求的Vue项目中,项目基于webpack 模板开发构建,大多数新项目可以直接基于检出代码继续开发。需要说明的是,项目额外引入的Element-UI和CryptoJS仅用于开发演示界面,他们不是必须且与权限控制毫无关系,项目应用中可以自行取舍。

目录结构

class="lazy" data-src/
 |-- api/     //接口文件
 |  |-- index.js    //输出通用axios实例
 |  |-- account.js   //按业务模块组织的接口文件,所有接口都引用./index提供的axios实例
 |-- assets/
 |-- components/
 |-- router/
 |  |-- fullpath.js   //完整路由数据,用于匹配用户的路由权限得到实际路由
 |  `-- index.js   //输出基础路由实例
 |-- views/
 |-- App.vue
 ·-- main.js

数据格式约定

路由权限数据必须是如下格式的对象数组,id和parent_id相同的两个路由具有上下级关系,如果希望使用自定义格式的路由数据,需要修改路由控制的相关实现。

[
 {
  "id": "1",
  "name": "菜单1",
  "parent_id": null,
  "route": "route1"
 },
 {
  "id": "2",
  "name": "菜单1-1",
  "parent_id": "1",
  "route": "route2"
 }
 ]

资源权限数据必须是如下格式的对象数组,每个对象代表一个RESTful请求,支持带参数的url。

[
 {
  "id": "2c9180895e172348015e1740805d000d",
  "name": "账号-获取",
  "url": "/accounts",
  "method": "GET"
 },
 {
  "id": "2c9180895e172348015e1740c30f000e",
  "name": "账号-删除",
  "url": "/accountmember
 解释:两个名词之间夹带一个参数,参数通常表示第一个名词的id

对于第一种格式需要注意的是,如果你要发起一个url为"/aaa/bbb"的请求,默认会被处理成"/aaa/**"进行权限校验,如果这里的”bbb”并不是参数而是url的一部分,那么你需要将url改成"/aaa/bbb/",在最后加一个”/“表示该url不需要转化格式。

拦截器的具体实现见App.vue中的setInterceptor()方法。

如果你的项目还需要其他的通配符格式,只需要在拦截器中实现对应的检测和转化方法就可以了。

演示及说明

演示说明:

DEMO项目中演示了动态菜单、动态路由、按钮权限、请求拦截。

演示项目后端由rap2生成mock数据,登录请求通常应该是POST方式,但因为rap2的编程模式无法获取到非GET的请求参数,因此只能用GET方式登录,实际项目中不建议仿效;

另外登录后获取权限的接口本来不需要携带额外参数,后端可以根据请求头携带的token信息实现用户鉴权,但因为rap2的编程模式获取不到headers数据,因此只能增加一个”Authorization”参数用于生成模拟数据。

测试账号:

1. username: root
 password: 任意
2. username: client
 password: 任意

关于Vue2.0中怎么实现用户权限控制就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Vue2.0中怎么实现用户权限控制

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL中如何限制用户权限和访问控制

在MySQL中,可以通过以下几种方法限制用户权限和访问控制:使用GRANT语句授予或撤销用户权限。GRANT语句允许管理员为用户分配特定的权限,如SELECT、INSERT、UPDATE、DELETE等。通过REVOKE语句可以撤销用户的权
MySQL中如何限制用户权限和访问控制
2024-03-06

vue按钮怎么实现权限控制

这篇文章主要讲解了“vue按钮怎么实现权限控制”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue按钮怎么实现权限控制”吧!一、步骤1.定义buttom权限在state中创建buttomPe
2023-06-22

如何在phpcms中实现用户注册登录及权限控制?(phpcms中,如何实现用户注册、登录以及权限控制功能?)

本文详细介绍了如何使用phpcms实现用户注册、登录和权限控制。通过创建用户组和权限表,可以灵活地管理用户权限。具体步骤包括:创建注册和登录页面,验证表单输入,使用member_add()和member_login()函数处理用户注册和登录,以及使用member_data()和member_auth()函数控制权限。
如何在phpcms中实现用户注册登录及权限控制?(phpcms中,如何实现用户注册、登录以及权限控制功能?)
2024-04-02

Ubuntu中怎么配置用户权限和访问控制

在Ubuntu中配置用户权限和访问控制可以通过以下几个步骤实现:创建用户:可以使用adduser命令创建新用户,例如sudo adduser newuser。分配用户到用户组:可以使用usermod命令将用户添加到指定的用户组,例如sud
Ubuntu中怎么配置用户权限和访问控制
2024-03-05

Teradata中怎么管理用户权限和访问控制

在Teradata中,用户权限和访问控制主要通过以下几种方式进行管理:创建和管理用户:管理员可以通过使用Teradata Administrator工具或者SQL语句来创建新用户,设置用户的登录名、密码、默认数据库等信息,并且可以随时修改或
Teradata中怎么管理用户权限和访问控制
2024-04-09

CRM Transaction处理中的权限控制怎么实现

本篇内容主要讲解“CRM Transaction处理中的权限控制怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CRM Transaction处理中的权限控制怎么实现”吧!当试图打开一个O
2023-06-04

如何在Prometheus中实现用户权限管理和访问控制

在Prometheus中实现用户权限管理和访问控制可以通过以下步骤来实现:使用基于OAuth2的认证服务:Prometheus本身并不提供用户管理和权限控制功能,但可以通过集成外部OAuth2认证服务来实现用户认证。常见的OAuth2认证服
如何在Prometheus中实现用户权限管理和访问控制
2024-03-04

如何在PHP项目中实现用户认证和权限控制?

如何在PHP项目中实现用户认证和权限控制?在现代的Web应用程序中,用户认证和权限控制是非常重要的功能之一。用户认证用于验证用户的身份和权限,而权限控制则确定用户对系统中各种资源的访问权限。在PHP项目中实现用户认证和权限控制,可以保护用户
如何在PHP项目中实现用户认证和权限控制?
2023-11-02

Spring Security权限控制的接口怎么实现

本篇内容主要讲解“Spring Security权限控制的接口怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring Security权限控制的接口怎么实现”吧!Introducti
2023-07-05

Exchange2010中如何使用RBAC来控制用户权限

这篇文章主要介绍Exchange2010中如何使用RBAC来控制用户权限,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、RBAC对于不同类型的用户有不同的作用。在2010的Exchange系统中,将会全部使用基于角
2023-06-17

mysql中DCL常用的用户和权限控制是什么

本文小编为大家详细介绍“mysql中DCL常用的用户和权限控制是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql中DCL常用的用户和权限控制是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、用
2023-06-29

Spring Security中粒度超细的权限控制怎么实现

这篇文章主要讲解了“Spring Security中粒度超细的权限控制怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring Security中粒度超细的权限控制怎么实现”吧!1
2023-06-19

Aurora数据库中怎么管理用户权限和访问控制

Aurora数据库使用IAM来管理用户权限和访问控制。您可以通过IAM控制台创建IAM用户、角色和策略,然后将这些IAM实体与Aurora数据库资源关联,从而控制谁可以访问数据库和执行哪些操作。您可以使用IAM策略来定义哪些操作可以被执行
Aurora数据库中怎么管理用户权限和访问控制
2024-04-09

编程热搜

目录