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实现的立体文字渐变效果
May 17 Javascript
javascript面向对象包装类Class封装类库剖析
Jan 24 Javascript
onbeforeunload与onunload事件异同点总结
Jun 24 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
Nov 20 Javascript
JS和JQ的event对象区别分析
Nov 24 Javascript
关于网页中的无缝滚动的js代码
Jun 09 Javascript
深入分析node.js的异步API和其局限性
Sep 05 Javascript
微信小程序登录态控制深入分析
Apr 12 Javascript
基于Vue实例生命周期(全面解析)
Aug 16 Javascript
vue+elementUI 复杂表单的验证、数据提交方案问题
Jun 24 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
Jan 14 Javascript
js实现移动端图片滑块验证功能
Sep 29 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/11/25 PHP
php字符串分割函数explode的实例代码
2013/02/07 PHP
非常好用的JsonToString 方法 简单实例
2013/07/18 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
JqueryMobile动态生成listView并实现刷新的两种方法
2014/03/05 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
微信小程序 location API接口详解及实例代码
2016/10/12 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
微信小程序 五星评价功能的实现
2017/03/09 Javascript
vue cli使用绝对路径引用图片问题的解决
2017/12/06 Javascript
使用node-media-server搭建一个简易的流媒体服务器
2021/01/20 Javascript
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
[01:20]辉夜杯背景故事宣传片《辉夜传说》
2015/12/25 DOTA
python动态加载变量示例分享
2014/02/17 Python
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
socket + select 完成伪并发操作的实例
2017/08/15 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
2018/04/17 Python
TensorFlow利用saver保存和提取参数的实例
2018/07/26 Python
浅析Python语言自带的数据结构有哪些
2019/08/27 Python
Django框架下静态模板的继承操作示例
2019/11/08 Python
Python用dilb提取照片上人脸的示例
2020/10/26 Python
用sleep间隔进行python反爬虫的实例讲解
2020/11/30 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
详解使用scrapy进行模拟登陆三种方式
2021/02/21 Python
说出一些常用的类,包,接口
2014/09/22 面试题
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
师范生的个人求职信范文
2014/01/04 职场文书
物理系毕业生自荐书范文
2014/02/22 职场文书
领导班子遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
大学生团日活动总结
2015/05/06 职场文书
劳动模范获奖感言
2015/07/31 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书