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 一行代码,轻松搞定浮动快捷留言-V2升级版
Apr 02 Javascript
JavaScript italics方法入门实例(把字符串显示为斜体)
Oct 17 Javascript
IE中鼠标经过option触发mouseout的解决方法
Jan 29 Javascript
javascript检测flash插件是否被禁用的方法
Jan 14 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
Jun 30 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
Jan 16 Javascript
AngularJS封装$http.post()实例详解
May 06 Javascript
基于canvas粒子系统的构建详解
Aug 31 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
Jul 30 Javascript
JS匿名函数内部this指向问题详析
May 10 Javascript
vue.config.js常用配置详解
Nov 14 Javascript
es6中new.target的作用和使用场景简单示例分析
Mar 14 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删除字符串最后一个字符的三种方法
2016/08/30 PHP
5款Javascript颜色选择器
2009/10/25 Javascript
基于jquery的可多选的下拉列表框
2012/07/20 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
Jquery实现鼠标移动放大图片功能实例
2015/03/25 Javascript
浅谈setTimeout 与 setInterval
2015/06/23 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
对Angular中单向数据流的深入理解
2018/03/31 Javascript
Vue项目路由刷新的实现代码
2019/04/17 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
2021/02/24 Javascript
[01:03]悬念揭晓 11月26日DOTA2完美盛典不见不散
2017/11/23 DOTA
Python交换变量
2008/09/06 Python
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
Python如何实现MySQL实例初始化详解
2017/11/06 Python
python生成圆形图片的方法
2020/03/25 Python
Python图像滤波处理操作示例【基于ImageFilter类】
2019/01/03 Python
python队列Queue的详解
2019/05/10 Python
Python语法之精妙的十个知识点(装B语法)
2020/01/18 Python
pygame实现弹球游戏
2020/04/14 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
Python中Qslider控件实操详解
2021/02/20 Python
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
高三政治教学反思
2014/02/06 职场文书
电大毕业生自我鉴定
2014/04/10 职场文书
大学英语演讲稿范文
2014/04/24 职场文书
新课培训心得体会
2014/09/03 职场文书
教育实践活动对照检查材料
2014/09/23 职场文书
幼儿园教师求职信
2015/03/20 职场文书
老公出轨后的保证书
2015/05/08 职场文书
清明节主题班会
2015/08/14 职场文书
90行Python代码开发个人云盘应用
2021/04/20 Python
numpy数据类型dtype转换实现
2021/04/24 Python
Go 语言结构实例分析
2021/07/04 Golang