【项目】Vue3+TS 退出登录 menu header搭建

news2025/1/14 18:25:41

💭💭

✨:【项目】Vue3+TS 退出登录 menu header搭建

💟:东非不开森的主页

💜: 今天永远比昨天更好💜💜

🌸: 如有错误或不足之处,希望可以指正,非常感谢😉

项目

  • 一、登录模块
    • 1.1. 跳转到主页
    • 1.2.退出登录
    • 1.3.记住密码
    • 1.4.获取用户信息
  • 二、 menu搭建
  • 三、header搭建

一、登录模块

1.1. 跳转到主页

路由导航守卫
参考资料: 地址

vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航(也就是路由拦截),一般用于访问某些页面的限制,如是否登录或者是否有权限

当一个导航触发时,全局前置守卫按照创建顺序调用。守卫是异步解析执行,此时导航在所有守卫 resolve 完之前一直处于等待中。

每个守卫方法接收两个参数:

  • to: 即将要进入的目标
  • from: 当前导航正要离开的路由

在这里插入图片描述

  • 这样写我们可以确保只要不是main下面,那么一定就要返回去登录
router.beforeEach((to) => {
  // 只有登录成功(token), 才能真正进入到main页面
  const token = localCache.getCache(LOGIN_TOKEN)
  if (to.path.startsWith('/main') && !token) {
    return '/login'
  }
})

在这里插入图片描述

在这里插入图片描述

1.2.退出登录

  • 需要定义一个事件,去除token,
    在这里插入图片描述

在这里插入图片描述

1.3.记住密码

这里我们都是在store进行报错的,可以全局共享数据
定义一个变量记录是否记住密码

  • 我们需要把输入的账号密码保存在账号里面然后进行判断
  • 再决定是否需要记住密码
  • 需要就保存进去
  • 不需要就移除

在这里插入图片描述
在这里插入图片描述

  • 需要记住密码,就保存,不需要就清除

在这里插入图片描述

1.4.获取用户信息

在这里插入图片描述

  • token可以写在请求数据那里
  • 但是最好写在拦截器里面

在这里插入图片描述
在这里插入图片描述
这个注意有个空格
这里如果axios版本是1.2.2的话会报错

具体文章: 类型“AxiosHeaders | Partial<RawAxiosHeaders & MethodsHeaders & CommonHeaders>”上不存在属性“Authorization”

在请求拦截器里添加Authorization携带Token
所以要这样写

interceptors: {
    requestSuccessFn: (config) => {
      // 每一个请求都自动携带token
      const token = localCache.getCache(LOGIN_TOKEN)
      if (config.headers && token) {
        // 类型缩小
        typeof config.headers.set === "function" &&
          config.headers.set("Authorization", `Bearer ${token}`)
        // config.headers.Authorization = "Bearer " + token
      }
      return config
    }
  }

这里我们可以给state定义类型,还有要注意我们所要的数据的类型是什么,别搞错了
userInfo/userMenus进行本地缓存
在这里插入图片描述
请求数据
在这里插入图片描述
数据
在这里插入图片描述

二、 menu搭建

在这里插入图片描述
我们可以先搭出来静态页面,然后再进行
在这里插入图片描述
获取数据
在这里插入图片描述

在这里插入图片描述

数据渲染
这里用到了动态组件,动态组件往往用于tab切换,
官方文档:
在这里插入图片描述

在这里插入图片描述

控制折叠
需要定义变量isFold为布尔值

main.vue
在这里插入图片描述
在这里插入图片描述

main-header.vue 图标部分
在这里插入图片描述

自定义时间,传递给父组件
在这里插入图片描述

main-menu.vue
文字部分隐藏显示
在这里插入图片描述
在这里插入图片描述

预览:
请添加图片描述

三、header搭建

header搭建
在这里插入图片描述
在这里插入图片描述
下拉菜单
Dropdown 插槽
在这里插入图片描述
退出登录
我们需要用到路由,还有之前的token
在这里插入图片描述

请添加图片描述

每个页面点击可以切换到对应页面
先构建页面
在这里插入图片描述
在这里插入图片描述

  • 动态的菜单进行权限管理
  • 但是所有的路由都是被注册进去

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/365526.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Cesium集成WebXR_连接VR设备

Cesium集成WebXR 文章目录Cesium集成WebXR1. 需求2. 技术基础2.1 WebGL2.2 WebXR2.3 其他3. 示例代码4. 效果图5. 参考链接1. 需求 通过WebXR接口,将浏览器端连接到VR头盔,实现在VR头盔中浏览Cesium场景,并可将头盔旋转的操作同步映射为场景…

干测试5年,经常被开发看不起,现在总算证明了自己····

测试不止是点点点 我感觉我是一个比较有发言权的人吧,我在测试行业摸爬滚打5年,以前经常听到开发对我说,天天的点点点有意思没? 和IT圈外的同学、朋友聊起自己的工作,往往一说自己是测试,无形中也会被大家…

CVE-2022-39197 POC(CobaltStrike XSS <=4.7)漏洞复现

漏洞说明 根据9.20日CobaltStrike官方发布的最新4.7.1版本的更新日志中介绍&#xff0c;<4.7的teamserver版本存在XSS漏洞&#xff0c;从而可以造成RCE远程代码执行 一位名为“Beichendream”的独立研究人员联系我们&#xff0c;告知我们他们在团队服务器中发现的一个 XSS …

ABBYY FineReader16最新PDF图片文字识别软件

ABBYY FineReader16是非常好的一款 OCR 识别软件&#xff08;可以识别不可编辑的PDF和图片文件&#xff09;&#xff0c;操作非常简单。ABBYY FineReader 16是一款知名的OCR文字识别软件&#xff08;图片文字识别&#xff09;。ABBYY 16采用了ABBYY最新推出的基于AI的OCR技术&a…

JVM记录

一、JVM体系结构&#xff1a; 类装载器ClassLoader&#xff1a;用来装载.class文件执行引擎&#xff1a;执行字节码&#xff0c;或者执行本地方法运行时数据区&#xff1a;方法区、堆、Java栈、程序计数器、本地方法栈1、方法区&#xff1a; 也称“永久代”&#xff0c;“非堆”…

渗透测试之主机探测存活性实验

渗透测试之主机探测存活性实验实验目的一、实验原理1.1 TCP/IP协议1. TCP2. IP1.2 Ping的原理二、实验环境2.1 操作机器2.2 实验工具三、实验步骤1. 学会使用ping命令2. 使用Nmap进行多种方式的探测总结实验目的 熟悉TCP/IP协议、Ping命令基本概念学习nmap、SuperScan扫描方式…

【Database-02】达梦数据库 - DM Manager管理工具安装

1、简介 DM Manager是达梦数据库自带的图形化界面管理工具&#xff0c;在安装达梦数据库的时候就会自动安装。 Linux环境&#xff0c;默认安装路径为&#xff1a;达梦安装目录/tool/manager&#xff0c;如果Linux是安装GUI&#xff0c;那么就可以直接启动使用。 实际大部分使…

Python自动化测试框架封装和调用

封装与调用函数与参数化前言 面实现了参数的关联&#xff0c;那种只是记流水账的完成功能&#xff0c;不便于维护&#xff0c;也没什么可读性&#xff0c;接下来这篇可以把每一个动作写成一个函数&#xff0c;这样更方便了。参数化的思维只需记住一点&#xff1a;不要写死 登录…

[黑马程序员SSM框架教程]04 IOC-入门案例

1.IOC入门案例思路分析 管什么?管bean&#xff08;service和dao&#xff09;如何将被管理的对象告知IOC容器?&#xff08;配置&#xff09;被管理的对象交给IOC容器&#xff0c;如何获取到IOC容器&#xff1f;(提供了个接口)如何获取到IOC中的bean&#xff1f;&#xff08;接…

Kubernetes Nginx 发布

kubernetes发布nginx 目录 Nginx Pod启动Service访问Nginx 2.1. NodePort访问Nginx 2.2. ClusterIP访问Nginx 2.3. LoadBalancer访问Nginx 2.4. ExternalName访问NginxDeployment方式部署Nginx 3.1 Nginx Replicas Nginx Pod 启动 nginx-v1.yaml apiVersion: v1 kind: Pod…

基于SPI的增强式插件框架设计

很久之前&#xff0c;为了诊断线上的问题&#xff0c;就想要是能有工具可以在线上出问题的时候&#xff0c;放个诊断包进去马上生效&#xff0c;就能看到线上问题的所在&#xff0c;那该是多么舒服的事情。后来慢慢的切换到 java 领域后&#xff0c;这种理想也变成了现实&#…

Maven中开源的报表平台组件(自带页面+直连数据库)

借鉴的网址&#xff1a;https://www.w3cschool.cn/ureport/

一文搞懂秒杀系统,欢迎参与开源,提交PR,提高竞争力。早日上岸,升职加薪。

前言 秒杀和高并发是面试的高频考点&#xff0c;也是我们做电商项目必知必会的场景。欢迎大家参与我们的开源项目&#xff0c;提交PR&#xff0c;提高竞争力。早日上岸&#xff0c;升职加薪。 知识点详解 秒杀系统架构图 秒杀流程图 秒杀系统设计 这篇文章一万多字&#xff0c;…

PDMS二次开发(一)——PML类型程序类型与概念

目录前言一、PML类型与概念基础知识变量函数小例子注释PML表达式条件判断语句循环skip和break窗口程序在PDMS菜单栏中添加程序窗口自动定位PML常见控件前言 PDMS二次开发需要.net 有自带的PML语言和C# .net一般通常泛指的是C#语言 模型数据借助.NET的接口可以转换成数据库中的…

达梦8数据守护动态增加实时备库

实时主备环境 类型 业务IP 库名 实例名 PORT_NUM MAL_HOST MAL_INST_DW_PORT MAL_PORT MAL_DW_PORT 主库dm8p 192.168.1.223 DAMENG GRP1_RT_01 5236 10.0.0.223 45101 55101 65101 备库dm8s 192.168.1.224 DAMENG GRP1_RT_02 5236 10.0.0.224 45121…

模拟电路知识点总结(详细版)-- PN结

一、半导体&#xff1a;介于绝缘体和导体之间 二、本征半导体&#xff1a;纯净的半导体 1.晶体结构&#xff1a;正四面体 2.载流子&#xff1a; 本征激发:逃离共价键的束缚&#xff0c;成为自由电子 (本征半导体的本征激发&#xff0c;通常是由温度引起的晶体结构内部的共价键断…

免费基于springboot的OA自动化办公系统,挺漂亮的

大家好&#xff0c;我是锋哥&#xff0c;看到一个不错的springboot的OA自动化办公系统&#xff0c;分享下哈。 项目介绍 这是一个OA办公自动化系统&#xff0c;使用Maven进行项目管理&#xff0c;基于springboot框架开发的项目&#xff0c;mysql底层数据库&#xff0c;前端采…

GEE学习笔记 五十五:GEE编辑器绘制样本点的一个bug(官方在5.1给出反馈已经修复相关bug)

在做地物分类的时候我们会采用GEE在线采集样本方式&#xff0c;但是这个有一个问题需要注意&#xff0c;如果直接使用绘制矩形和点会将点变为 ee.Geometry.Point([xxx], null, false) 这种形式。出现的问题步骤如下&#xff1a; 1、绘制一个点和一个矩形 2、修改geometry为fea…

持续事务管理过程中的事件驱动

比较官方的定义&#xff1a;事件驱动是指在持续事务管理过程中&#xff0c;进行决策的一种策略&#xff0c;即跟随当前时间点上出现的事件&#xff0c;调动可用资源&#xff0c;执行相关任务&#xff0c;使不断出现的问题得以解决&#xff0c;防止事务堆积。在计算机编程、公共…

WPF五种布局

GridGrid为WPF中最常用的布局容器, 作为View中的主要组成部分, 负责框架中整体的页面布局。标签含义ShowGridLines可以设置行业的边距线的显示Grid. RowDefinitions可以创建任意行, 进行固定高度与百分比高度设置Grid. ColumnDefinitions可以创建任意列, 进行固定宽度与百分宽度…