当前位置: 首页 > news >正文

VueRouter

1、用户权限问题

  1. 可以在路由全局前置守卫判断当前vuex里是否有token

    有token值证明刚才登录过, 无token值证明未登录

    router.beforeEach((to, from, next) => {const token = store.state.tokenif (token) {// 如果有token, 证明已登录if (!store.state.userInfo.username) {// 有token但是没有用户信息, 才去请求用户信息保存到vuex里// 调用actions里方法请求数据store.dispatch('initUserInfo')// 下次切换页面vuex里有用户信息数据就不会重复请求用户信息}next() // 路由放行} else {next('/login')}
    })
    
  2. 在主页删除本地的vuex数据, 刷新页面让vuex取出来空的token, 但是发现递归了

  3. 原因: 因为强制跳转到登录页也会让路由守卫再次触发, 又判断无token, 再次跳转登录页, 就递归了

  4. 解决: 登录页面应该是无需判断token的, 还有注册页面, 所以设置白名单, 无token要去这2个页面直接放行

    // 无需验证token的页面
    const whiteList = ['/login', '/reg']router.beforeEach((to, from, next) => {const token = store.state.tokenif (token) {// 如果有token, 证明已登录if (!store.state.userInfo.username) {// 有token但是没有用户信息, 才去请求用户信息保存到vuex里// 调用actions里方法请求数据store.dispatch('initUserInfo')// 下次切换页面vuex里有用户信息数据就不会重复请求用户信息}next() // 路由放行} else {// 如果无token// 如果去的是白名单页面, 则放行if (whiteList.includes(to.path)) {next()} else {// 如果其他页面请强制拦截并跳转到登录页面next('/login')}}
    })
    

2、为什么我刷新首页不会走前置路由守卫

  • 原因:当把路由守卫放在了main.js中,页面已经渲染完了此时不会走路由守卫
  • 解决办法:把main.js中的前置路由守卫放在store/inde.js即可解决

http://www.lryc.cn/news/277363.html

相关文章:

  • 什么是React.FC | 封装ant design弹框组件之:ant design 修改密码弹框组件
  • DHCP
  • VS code的使用介绍
  • 【蓝桥杯选拔赛真题57】python兔子分胡萝卜 第十四届青少年组蓝桥杯python 选拔赛比赛真题解析
  • Spring MVC中JSON数据处理方式!!!
  • 学习JavaEE的日子 阶段回顾
  • 深入理解 Flink(一)Flink 架构设计原理
  • Python pip 常用指令
  • Eureka工作原理详解
  • 开源加解密库之GmSSL
  • 小程序分销商城,打造高效线上购物体验
  • Day2:【英文时评】当我们谈论海克斯科技的时候我们在谈论什么?(未完结)
  • Selenium-java 定位元素时切换iFrame时的方法
  • WinForms中的UI卡死
  • Zookeeper设计理念与源码剖析
  • EasyExcel快速导出 100W 数据
  • SpingBoot的项目实战--模拟电商【5.沙箱支付】
  • How to collect data
  • 二刷Laravel 教程(用户注册)总结Ⅳ
  • 跨国制造业组网方案解析,如何实现总部-分支稳定互联?
  • 网络的设置
  • CentOS常用命令
  • Linux运维之切换到 root 用户
  • 【2024系统架构设计】 系统架构设计师第二版-层次式架构设计理论与实践
  • SpringSecurity的注解@PreAuthorize的失效问题
  • k8s的集群调度
  • 简单易懂的理解 PyTorch 中 Transformer 组件
  • 搭建Eureka服务注册中心
  • 【React】react-router-dom中的HashRouter和BrowserRouter实现原理
  • 生物信息学中的可重复性研究