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 相关文章推荐
IE8 浏览器Cookie的处理
Jan 31 Javascript
向大师们学习Javascript(视频与PPT)
Dec 27 Javascript
js 面向对象的技术创建高级 Web 应用程序
Feb 25 Javascript
HTML Color Picker(js拾色器效果)
Aug 27 Javascript
基于JavaScript实现通用tab选项卡(通用性强)
Jan 07 Javascript
JS表单验证的代码(常用)
Apr 08 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
May 28 Javascript
JS取模、取商及取整运算方法示例
Oct 13 Javascript
jquery操作ul的一些操作笔记整理(干货)
Aug 31 jQuery
使用JS模拟锚点跳转的实例
Feb 01 Javascript
小程序绑定用户方案优化小结
May 15 Javascript
吃通javascript正则表达式
Apr 21 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 win下Socket方式发邮件类
2009/08/21 PHP
解析php中获取系统信息的方法
2013/06/25 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
php输入数据统一类实例
2015/02/23 PHP
PHP计算指定日期所在周的开始和结束日期的方法
2015/03/24 PHP
分享PHP守护进程类
2015/12/30 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
jquery的index方法实现tab效果
2011/02/16 Javascript
window.onload和$(function(){})的区别介绍
2013/10/30 Javascript
Jquery日期选择datepicker插件用法实例分析
2015/06/08 Javascript
javascript jquery对form元素的常见操作详解
2016/06/12 Javascript
微信小程序登录换取token的教程
2018/05/31 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
2018/10/19 Javascript
如何使用JavaScript实现栈与队列
2019/06/24 Javascript
VuePress 中如何增加用户登录功能
2019/11/29 Javascript
Python操作SQLite简明教程
2014/07/10 Python
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
pyside+pyqt实现鼠标右键菜单功能
2020/12/08 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
2020/04/02 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
如何用 Python 制作一个迷宫游戏
2021/02/25 Python
HTML5的结构和语义(5):交互
2008/10/17 HTML / CSS
世界首屈一指的钓鱼用品商店:TackleDirect
2016/07/26 全球购物
香港礼品网站:GiftU eshop
2017/09/01 全球购物
如何进行Linux分区优化
2016/09/13 面试题
护士自我评价范文
2014/01/25 职场文书
竞选村长演讲稿
2014/04/28 职场文书
揭牌仪式策划方案
2014/05/28 职场文书
计算机专业求职信
2014/06/02 职场文书
外贸业务员求职信
2014/06/16 职场文书
单位委托书格式范本
2014/09/29 职场文书
临床医学生职业规划书范文
2014/10/25 职场文书
公务员考察材料范文
2014/12/23 职场文书
《巫师》是美食游戏?CDPR10月将推出《巫师》官方食谱
2022/04/03 其他游戏