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 相关文章推荐
jquery tools 系列 scrollable学习
Sep 06 Javascript
jQuery:节点(插入,复制,替换,删除)操作
Mar 04 Javascript
JS关键字球状旋转效果的实例代码
Nov 29 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
Oct 11 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
Mar 26 Javascript
javascript数组去重的方法汇总
Apr 14 Javascript
JS实现可点击展开与关闭的左侧广告代码
Sep 02 Javascript
基于jquery实现省市联动效果
Nov 23 Javascript
JS实现页面内跳转的简单代码
Sep 03 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
Sep 19 jQuery
纯 JS 实现放大缩小拖拽功能(完整代码)
Nov 25 Javascript
微信小程序实现底部弹出框
Nov 18 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
SONY ICF-SW55的电路分析
2021/03/02 无线电
PHP函数篇之掌握ord()与chr()函数应用
2011/12/05 PHP
PHP读取xml方法介绍
2013/01/12 PHP
PHP数组去重比较快的实现方式
2016/01/19 PHP
php获取linux命令结果的实例
2017/03/13 PHP
php往mysql中批量插入数据实例教程
2018/12/12 PHP
javascript 清除输入框中的数据
2009/04/13 Javascript
javascript针对DOM的应用实例(一)
2012/04/15 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
在Ubuntu上安装最新版本的Node.js
2014/07/14 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
纯js三维数组实现三级联动效果
2017/02/07 Javascript
jQuery插件zTree实现删除树子节点的方法示例
2017/03/08 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
2017/04/13 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
jquery ztree实现右键收藏功能
2017/11/20 jQuery
详解.vue文件解析的实现
2018/06/11 Javascript
Bootstrap模态对话框用法简单示例
2018/08/31 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
vue+axios 拦截器实现统一token的案例
2020/09/11 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
Python之os操作方法(详解)
2017/06/15 Python
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
Python 3.6 读取并操作文件内容的实例
2018/04/23 Python
python多线程使用方法实例详解
2019/12/30 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
Python龙贝格法求积分实例
2020/02/29 Python
大一自我鉴定范文
2013/10/04 职场文书
你懂得怎么写自荐信吗?
2013/12/27 职场文书
纠纷协议书
2014/04/16 职场文书
业务内勤岗位职责
2014/04/30 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
公司地址变更通知
2015/04/25 职场文书
Python 类,对象,数据分类,函数参数传递详解
2021/09/25 Python