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

【硅谷甄选】导航守卫(进度条,网页标题,路由鉴权)

import setting from '@/setting'
import router from '@/router'
// 任意路由切换实现进度条业务: nprogress插件 
import nprogress from 'nprogress' // js插件在ts中的报错
// 引入进度条样式
import 'nprogress/nprogress.css'
// 表示在加载进度条时不显示加载小图标
nprogress.configure({ showSpinner: false });
// 获取用户相关的小仓库内部 token 数据,去判断用户是否登陆成功
import useUserStore from './store/modules/user'
import pinia from './store'
const userStore = useUserStore(pinia)// 全局守卫:项目中任意路由切换都会触发的钩子
// 全局前置守卫
router.beforeEach(async (to: any, from: any, next) => {// 页面标题document.title = `${setting.title}-${to.meta.title}`// 访问某个路由之前的守卫// next 路由的放行函数nprogress.start() // 开启进度条// 获取token,判断用户是否登录const token = userStore.token// 获取用户名const username = userStore.username// 路由鉴权 项目中的路由有何种条件下可以被访问// 用户未登录,可以访问login,其余六个路由不能访问// 登录成功,不可以访问login,其余的都可以访问if (token) {if (to.path === '/login') {next({ path: '/' }) // 跳转到首页} else {// 有用户信息if (username) {// 放行next()} else {//  如果没有用户信息,在守卫这里发送请求获取用户信息再放行try {await userStore.userInfo()// 可能出现的问题:刷新的时候是异步路由,有可能获取到用户信息,异步路由还没有加载完毕,出现空白的效果// next({...to})next()} catch (error) {//token过期或者用户手动修改本地存储->都获取不到用户信息// await 确保用户退出登录成功后,进行路由跳转await userStore.userLogout()next({ path: '/login', query: { redirect: to.path } })}}}} else {// 用户未登录if (to.path === '/login') {next()} else {next({ path: '/login', query: { redirect: to.path } })}}
})
// 全局后置守卫
router.afterEach((to: any, from: any) => {nprogress.done()
})

nprogress 使用

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

相关文章:

  • OpenHarmony—TypeScript到ArkTS约束说明
  • 蓝桥杯——每日一练(简单题)
  • css设置不可点击
  • fastapi学习
  • 【代码随想录-数组】长度最小的子数组
  • 多表查询练习题
  • SpringBoot之时间数据前端显示格式化
  • Maven讲解
  • Redis2-事务 连接Java 整合springboot 注解缓存
  • CHFS 文件服务器搭建小记
  • vue中图片不显示问题 - vue中静态资源加载
  • IP报文格式
  • k8s 进阶实战笔记 | Pod 创建过程详解
  • 使用MMYOLO中yolov8训练自己VOC数据集实战
  • 解决方案 | 基于SFTP协议的文件传输断点续传Java实现方案
  • web前端项目-动画特效【附源码】
  • 蓝桥杯备战——6.串口通讯
  • Redis为什么速度快:数据结构、存储及IO网络原理总结
  • OSI七层模型 | TCP/IP模型 | 网络和操作系统的联系 | 网络通信的宏观流程
  • Java集合总览
  • C# 设置一个定时器函数
  • 第十四届蓝桥杯省赛pythonB组题。 管道
  • 淘宝扭蛋机小程序:新时代的互动营销与娱乐体验
  • 深度强化学习(王树森)笔记02
  • 【分布式技术专题】「分布式技术架构」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
  • 常用的gpt-4 prompt words收集8
  • 【GitHub项目推荐--开源2D 游戏引擎】【转载】
  • 鸿蒙APP的应用场景
  • goland课程管理(6)
  • 04.Elasticsearch应用(四)