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 相关文章推荐
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
Jan 16 Javascript
js冒泡法和数组转换成字符串示例代码
Aug 14 Javascript
更快的异步执行(setTimeout多浏览器)
Aug 12 Javascript
JavaScript定义类和对象的方法
Nov 26 Javascript
移动端 一个简单易懂的弹出框
Jul 06 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
Aug 05 Javascript
简单实现Vue的observer和watcher
Dec 21 Javascript
JavaScript ES6中export、import与export default的用法和区别
Mar 14 Javascript
聊聊Vue.js的template编译的问题
Oct 09 Javascript
node.js域名解析实现方法详解
Nov 05 Javascript
JS实现扫码枪扫描二维码功能
Jan 03 Javascript
使用Vue 自定义文件选择器组件的实例代码
Mar 04 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中对数据库操作的封装
2006/10/09 PHP
php中变量及部分适用方法
2008/03/27 PHP
探讨如何把session存入数据库
2013/06/07 PHP
php通过文件流方式复制文件的方法
2015/03/13 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
Yii框架应用组件用法实例分析
2020/05/15 PHP
js模拟类继承小例子
2010/07/17 Javascript
JavaScript对象和字串之间的转换实例探讨
2013/04/21 Javascript
使用jsonp完美解决跨域问题
2014/11/27 Javascript
判断JS对象是否拥有某属性的方法推荐
2016/05/12 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
详解用node-images 打造简易图片服务器
2017/05/08 Javascript
JS处理数据四舍五入(tofixed与round的区别详解)
2017/10/26 Javascript
vue解决弹出蒙层滑动穿透问题的方法
2018/09/22 Javascript
JS集合set类的实现与使用方法示例
2019/02/01 Javascript
浅谈使用nodejs搭建web服务器的过程
2020/07/20 NodeJs
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
微信小程序实现列表左右滑动
2020/11/19 Javascript
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
python高阶爬虫实战分析
2018/07/29 Python
python正向最大匹配分词和逆向最大匹配分词的实例
2018/11/14 Python
python使用zip将list转为json的方法
2018/12/31 Python
Python实现京东秒杀功能代码
2019/05/16 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
使用Pyhton集合set()实现成果查漏的例子
2019/11/24 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
C语言中break与continue的区别
2012/07/12 面试题
幼儿园园长岗位职责
2013/11/26 职场文书
家长给孩子的表扬信
2014/01/17 职场文书
销售提升方案
2014/06/07 职场文书
2015年信访维稳工作总结
2015/04/07 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
医务人员医德医风心得体会
2016/01/25 职场文书
SpringCloud项目如何解决log4j2漏洞
2022/04/10 Java/Android
Python中request的基本使用解决乱码问题
2022/04/12 Python
Win11 BitLocker 驱动器加密
2022/04/19 数码科技