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应该怎样学
Apr 16 Javascript
js作用域及作用域链概念理解及使用
Apr 15 Javascript
jquery封装的对话框简单实现
Jul 21 Javascript
两个select多选模式的选项相互移动(示例代码)
Jan 11 Javascript
jQuery使用元素属性attr赋值详解
Feb 27 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
Jul 20 Javascript
javascript this详细介绍
Sep 19 Javascript
如何选择jQuery版本 1.x? 2.x? 3.x?
Apr 01 jQuery
JS实现页面打印(整体、局部)
Aug 18 Javascript
JS控制鼠标拒绝点击某一按钮的实例
Dec 29 Javascript
解决node终端下运行js文件不支持ES6语法
Apr 04 Javascript
解决nuxt页面中mounted、created、watch执行两遍的问题
Nov 05 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 cookie 作用范围?不要在当前页面使用你的cookie
2009/03/24 PHP
zend framework文件上传功能实例代码
2013/12/25 PHP
thinkphp框架下404页面设置 仅三步
2016/05/14 PHP
javascript 树控件 比较好用
2009/06/11 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
浅谈JavaScript中的this指针和引用知识
2016/08/05 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
JavaScript实现自动切换图片代码
2016/10/11 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
2016/11/30 Javascript
JavaScript 中对象的深拷贝
2016/12/04 Javascript
JS常用知识点整理
2017/01/21 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
2018/09/18 Javascript
解决eclipse中没有js代码提示的问题
2018/10/10 Javascript
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
JavaScript实现美化滑块效果
2019/05/17 Javascript
详解vue微信网页授权最终解决方案
2019/06/16 Javascript
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
nodejs中使用worker_threads来创建新的线程的方法
2021/01/22 NodeJs
python为tornado添加recaptcha验证码功能
2014/02/26 Python
python3.3使用tkinter开发猜数字游戏示例
2014/03/14 Python
python去除文件中空格、Tab及回车的方法
2016/04/12 Python
详解Python中的__new__、__init__、__call__三个特殊方法
2016/06/02 Python
浅谈Python数据类型之间的转换
2016/06/08 Python
详解将Django部署到Centos7全攻略
2018/09/26 Python
Python 统计位数为偶数的数字代码详解
2020/03/15 Python
python使用布隆过滤器的实现示例
2020/08/20 Python
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
咖啡书吧创业计划书
2014/01/13 职场文书
大学生的自我鉴定范文
2014/01/21 职场文书
端午节活动策划方案
2014/03/09 职场文书
食品流通安全承诺书
2014/05/22 职场文书
专业见习报告范文
2014/11/03 职场文书
幼儿园食品安全责任书
2015/05/08 职场文书
2015年保险业务员工作总结
2015/05/27 职场文书
Win10多屏显示如何设置?Win10电脑多屏显示设置操作方法
2022/07/07 数码科技