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动态加载三
Aug 22 Javascript
JavaScript使用cookie实现记住账号密码功能
Apr 27 Javascript
js实现网页抽奖实例
Aug 05 Javascript
Bootstrap风格的zTree右键菜单
Feb 17 Javascript
关于vue.js发布后路径引用的问题解决
Aug 15 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
Nov 30 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
Mar 04 Javascript
JavaScript中的 new 命令
May 22 Javascript
JS实现电脑虚拟键盘的操作
Jun 24 Javascript
Vue中 axios delete请求参数操作
Aug 25 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
Oct 20 Javascript
vue编写简单的购物车功能
Jan 08 Vue.js
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快递单号查询接口使用示例
2014/05/05 PHP
PHPMailer发送邮件
2016/12/28 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
2013/12/04 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
jstree的简单实例
2016/12/01 Javascript
AngularJS使用angular.bootstrap完成模块手动加载的方法分析
2017/01/19 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
vue监听input标签的value值方法
2018/08/27 Javascript
使用Angular Cli如何创建Angular私有库详解
2019/01/30 Javascript
js实现随机点名程序
2020/09/17 Javascript
WEB前端性能优化的7大手段详解
2020/02/04 Javascript
JavaScript实现Tab选项卡切换
2020/02/13 Javascript
jQuery实现的上拉刷新功能组件示例
2020/05/01 jQuery
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
[56:29]Secret vs Optic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python素数检测的方法
2015/05/11 Python
Python使用正则表达式实现文本替换的方法
2017/04/18 Python
python实现的正则表达式功能入门教程【经典】
2017/06/05 Python
django在接受post请求时显示403forbidden实例解析
2018/01/25 Python
对pandas里的loc并列条件索引的实例讲解
2018/11/15 Python
python使用 __init__初始化操作简单示例
2019/09/26 Python
利用纯html5绘制出来的一款非常漂亮的时钟
2015/01/04 HTML / CSS
美国老牌主机服务商:iPage
2016/07/22 全球购物
Waterford美国官网:爱尔兰水晶制品品牌
2017/04/26 全球购物
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
Hoover胡佛官网:美国吸尘器和洗地机品牌
2019/01/09 全球购物
大学生写自荐信的技巧
2014/01/08 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
JS数组方法some、every和find的使用详情
2021/10/05 Javascript
Spring Boot 使用 Spring-Retry 进行重试框架
2022/04/24 Java/Android