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

OJ在线评测系统 前端开发设计优化通用菜单组件二 调试用户自动登录

通用的菜单组件开发二

接下来要完善 权限功能

就是只有登录后才能进入题目查看界面

用户只能看到我们有权限的菜单

我们要在路由文件里面去操作

原理是控制路由设置隐藏

只要用户没有权限 就过滤掉隐藏

全局权限管理

实现想清楚有那些权限

/*** 权限定义*/
const ACCESS_ENUM = {NOT_LOGIN: "notLogin",USER: "user",ADMIN: "admin",
};//导出
export default ACCESS_ENUM;

我们接下来要在菜单组件里

判断用户是否有权限

定义一个通用的权限校验方法

import ACCESS_ENUM from "@/access/accessEnum";/*** 检查权限(判断当前登录用户是否具有某个权限)* @param loginUser 当前登录用户* @param needAccess 需要有的权限* @return boolean 有无权限*/
const checkAccess = (loginUser: any, needAccess = ACCESS_ENUM.NOT_LOGIN) => {// 获取当前登录用户具有的权限(如果没有 loginUser,则表示未登录)const loginUserAccess = loginUser?.userRole ?? ACCESS_ENUM.NOT_LOGIN;if (needAccess === ACCESS_ENUM.NOT_LOGIN) {return true;}// 如果用户登录才能访问if (needAccess === ACCESS_ENUM.USER) {// 如果用户没登录,那么表示无权限if (loginUserAccess === ACCESS_ENUM.NOT_LOGIN) {return false;}}// 如果需要管理员权限if (needAccess === ACCESS_ENUM.ADMIN) {// 如果不为管理员,表示无权限if (loginUserAccess !== ACCESS_ENUM.ADMIN) {return false;}}return true;
};export default checkAccess;

我们找到菜单栏的组件


// 展示在菜单的路由数组
const visibleRoutes = computed(() => {return routes.filter((item, index) => {if (item.meta?.hideInMenu) {return false;}// 根据权限过滤菜单if (!checkAccess(store.state.user.loginUser, item?.meta?.access as string)) {return false;}return true;});
});

用户自动登录

不能刷新就要重新登陆

编写获取远程获取登录信息的代码

我们应该在一个全局的位置去获取触发这个

getLoginUser函数的执行

我们可以在路由拦截

全局页面入口拦截 app.vue

全局通用布局

我们选择的是在main.ts文件中引入


http://www.mrgr.cn/news/30576.html

相关文章:

  • 关于指针p有关的3个值
  • 【软考】系统架构设计师-计算机系统基础(2):操作系统
  • 脑机接口、嵌入式 AI 、工业级 MR、空间视频和下一代 XR 浏览器丨RTE2024 空间计算和新硬件专场回顾
  • FP独立站引流革命:GG斗篷技术解锁流量新策略
  • 【Elasticsearch】Elasticsearch集成Spring Boot
  • HCIP—快速生成树协议(RSTP)实验配置
  • JavaFX实现视频播放功能
  • SPI接口通信协议浅谈成都自动化开发
  • yolov5/8/9/10模型在VOC数据集上的应用【代码+数据集+python环境+GUI系统】
  • Linux 后台运行服务的全攻略:nohup、screen、tmux 和 systemd 的实战指南
  • (笔记)mac笔记本调节键盘速率
  • 【大模型开发】 迎接AI新时代:Qwen2.5发布,超越LLaMA3!本地私有化部署:如何通过一键API调用不同模型?(附源码地址)
  • C++——求3个数中最大的数(分别考虑整数、双精度数、长整数的情况),用函数模板来实现。
  • 前端框架对比和选择
  • 6. 什么是MySQL的事务?如何在Java中使用Connection接口管理事务?
  • chapter16-坦克大战【1】——(自定义泛型)——day21
  • JZ2440开发板——S3C2440的存储控制器
  • C++ prime plus-3-编程练习
  • C++标准的一些特性记录:C++11的auto和decltype
  • 每天五分钟深度学习框架pytorch:pytorch中已经定义好的损失函数
  • 【洛谷】P1546 [USACO3.1] 最短网络 Agri-Net 的题解
  • 倍增练习(1)
  • pg入门3—详解tablespaces1
  • 恶意Bot流量识别分析实践
  • 计算机毕业设计 奖学金评定管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • Python 入门教程(4)数据类型 | 4.6、列表