Vue 页面权限控制和登陆验证功能的实例代码


Posted in Javascript onJune 20, 2019

页面权限控制

页面权限控制是什么意思呢?

就是一个网站有不同的角色,比如管理员和普通用户,要求不同的角色能访问的页面是不一样的。如果一个页面,有角色越权访问,这时就得做出限制了。

Vue 动态添加路由及生成菜单 这是我写过的一篇文章,

通过动态添加路由和菜单来做控制,不能访问的页面不添加到路由表里,这是其中一种办法。

另一种办法就是所有的页面都在路由表里,只是在访问的时候要判断一下角色权限。如果有权限就让访问,没有权限就拒绝,跳转到 404 页面。

思路:

在每一个路由的 meta 属性里,将能访问该路由的角色添加到 roles 里。用户每次登陆后,将用户的角色返回。然后在访问页面时,把路由的 meta 属性和用户的角色进行对比,如果用户的角色在路由的 roles 里,那就是能访问,如果不在就拒绝访问。

代码示例:

路由信息

routes: [
 {
  path: '/login',
  name: 'login',
  meta: {
   roles: ['admin', 'user']
  },
  component: () => import('../components/Login.vue')
 },
 {
  path: 'home',
  name: 'home',
  meta: {
   roles: ['admin']
  },
  component: () => import('../views/Home.vue')
 },
]

页面控制

// 假设角色有两种:admin 和 user
// 这里是从后台获取的用户角色
const role = 'user'
// 在进入一个页面前会触发 router.beforeEach 事件
router.beforeEach((to, from, next) => {
 if (to.meta.roles.includes(role)) {
  next()
 } else {
  next({path: '/404'})
 }
})

登陆验证

网站一般只要登陆过一次后,接下来该网站的其他页面都是可以直接访问的,不用再次登陆。

我们可以通过 token 或 cookie 来实现,下面用代码来展示一下如何用 token 控制登陆验证。

router.beforeEach((to, from, next) => {
 // 如果有token 说明该用户已登陆
 if (localStorage.getItem('token')) {
  // 在已登陆的情况下访问登陆页会重定向到首页
  if (to.path === '/login') {
   next({path: '/'})
  } else {
   next({path: to.path || '/'})
  }
 } else {
  // 没有登陆则访问任何页面都重定向到登陆页
  if (to.path === '/login') {
   next()
  } else {
   next(`/login?redirect=${to.path}`)
  }
 }
})

上述所有实现,都可以在我的 vue轻量级后台管理系统基础模板 项目里找到

总结

以上所述是小编给大家介绍的Vue 页面权限控制和登陆验证功能的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
细说浏览器特性检测(2)-通用事件检测
Nov 05 Javascript
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
Mar 05 Javascript
jquery.post用法示例代码
Jan 03 Javascript
jQuery对val和atrr("value")赋值的区别介绍
Sep 26 Javascript
简单介绍JavaScript的变量和数据类型
Jun 03 Javascript
跟我学习javascript的函数调用和构造函数调用
Nov 16 Javascript
jQuery简单入门示例之用户校验demo示例
Jul 09 Javascript
js实现年月日表单三级联动
Apr 17 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
Nov 04 Javascript
通过扫小程序码实现网站登陆功能
Aug 22 Javascript
vue实现移动端触屏拖拽功能
Aug 21 Javascript
js实现数字跳动到指定数字
Aug 25 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
Jun 20 #jQuery
javascript获取select值的方法完整实例
Jun 20 #Javascript
node基于async/await对mysql进行封装
Jun 20 #Javascript
JavaScrip数组去重操作实例小结
Jun 20 #Javascript
Vue 动态添加路由及生成菜单的方法示例
Jun 20 #Javascript
JavaScript命名空间模式实例详解
Jun 20 #Javascript
npm的lock机制解析
Jun 20 #Javascript
You might like
PHP 程序员的调试技术小结
2009/11/15 PHP
php Ubb代码编辑器函数代码
2012/07/05 PHP
php实现简单洗牌算法
2013/06/18 PHP
深入PHP购物车模块功能分析(函数讲解,附源码)
2013/06/25 PHP
PHP中判断变量为空的几种方法小结
2013/11/12 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
php多线程并发实现方法
2016/09/30 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
2019/01/10 PHP
Laravel服务容器绑定的几种方法总结
2020/06/14 PHP
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
javascript中创建对象的几种方法总结
2013/11/01 Javascript
JS简单实现文件上传实例代码(无需插件)
2013/11/15 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
百度地图自定义控件分享
2015/03/04 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
2015/11/09 Javascript
深入理解JavaScript 函数
2016/06/06 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
2017/06/14 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
浅析为什么a="abc" 不等于 a=new String("abc")
2017/10/25 Javascript
vue-router实现嵌套路由的讲解
2019/01/19 Javascript
Vue框架TypeScript装饰器使用指南小结
2019/02/18 Javascript
vue3.0 搭建项目总结(详细步骤)
2019/05/20 Javascript
微信小程序实现音频文件播放进度的实例代码
2020/03/02 Javascript
原生js实现html手机端城市列表索引选择城市
2020/06/24 Javascript
Python使用struct处理二进制的实例详解
2017/09/11 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
No7 Beauty美国官网:英国国民护肤品牌
2019/10/31 全球购物
工程造价专业大学生职业规划范文
2014/03/09 职场文书
幼儿园保育员责任书
2014/07/22 职场文书
法人委托书范本格式
2014/09/15 职场文书
2014年化验员工作总结
2014/11/18 职场文书