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 相关文章推荐
Javascript加载速度慢的解决方案
Mar 11 Javascript
JavaScript数值数组排序示例分享
May 27 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
Jun 24 Javascript
JS+CSS实现Li列表隔行换色效果的方法
Feb 16 Javascript
Jquery异步提交表单代码分享
Mar 26 Javascript
浅析BootStrap栅格系统
Jun 07 Javascript
jQuery页面弹出框实现文件上传
Feb 09 Javascript
jQuery.cookie.js使用方法及相关参数解释
Mar 06 Javascript
Vue原理剖析 实现双向绑定MVVM
May 03 Javascript
解决JS外部文件中文注释出现乱码问题
Jul 09 Javascript
React操作真实DOM实现动态吸底部的示例
Oct 23 Javascript
vue组件jsx语法的具体使用
May 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
骨王战斗力在公会成员中排不进前五,却当选了会长,原因竟是这样
2020/03/02 日漫
Apache实现Web Server负载均衡详解(不考虑Session版)
2013/07/05 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
提高Laravel应用性能方法详解
2019/06/24 PHP
Mootools 1.2教程(21)——类(二)
2009/09/15 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
2014/05/04 Javascript
原生js事件的添加和删除的封装
2014/07/01 Javascript
js实时获取并显示当前时间的方法
2015/07/31 Javascript
jQuery滚动加载图片实现原理
2015/12/14 Javascript
this,this,再次讨论javascript中的this,超全面(经典)
2016/01/05 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
去除html代码里面的script正则方法
2016/05/19 Javascript
当jquery ajax遇上401请求的解决方法
2016/05/19 Javascript
浅谈JavaScript的全局变量与局部变量
2016/06/10 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
2016/10/21 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
vue弹窗组件的实现示例代码
2018/09/10 Javascript
详解Nuxt.js中使用Element-UI填坑
2019/09/06 Javascript
原生JS实现微信通讯录
2020/06/18 Javascript
在vue中使用console.log无效的解决
2020/08/09 Javascript
在Python中操作列表之list.extend()方法的使用
2015/05/20 Python
Python实现的排列组合计算操作示例
2017/10/13 Python
解决Python下imread,imwrite不支持中文的问题
2018/12/05 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
怎么快速自学python
2020/06/22 Python
大学生毕业自我评价范文分享
2013/11/07 职场文书
消防安全责任书范本
2014/04/15 职场文书
公司运动会策划方案
2014/05/25 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
计划生育汇报材料
2014/12/26 职场文书
委托书英文
2015/01/28 职场文书
财务人员入职担保书
2015/09/22 职场文书
HR必备:销售经理聘用合同范本
2019/08/21 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android