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

前端页面权限管控-高阶组件

一般开发项目时,都会遇到要求做页面权限管控的需求,例如,某某环境(开发/测试/预发/生产)某人的级别权限只看某些菜单。
一般这种需求直接封装组件最干净,且复用性强。

假设接口请求配置

export async function queryIsAuthorized(authCode: string, currentEnv: string) {// 传入当前环境(currentEnv), 线下环境可不校验权限if ([ENV.DEV, ENV.LOCAL, ENV.STABLE].includes(currentEnv as ENV)) return true;const res = await baseRequest('/queryIsAuthorized', {method: 'get',params: { authCode },});return res?.model;
}

组件 withAuth.jsx

import { queryIsAuthorized } from '@/common/request';
import { CURRENT_ENV } from '@/insiopweb-common'; // 环境配置,根据实际需求项目匹配=MOCK = "mock", LOCAL = "local", STABLE = "stable",DEV = "dev",TEST = "test", PRE = "pre", PROD = "prod",
import { useRequest } from 'ahooks';
import React from 'react';const withAuth = (Component: () => React.JSX.Element, code: string) => () => {const { data: hasEditAuth } = useRequest(async () => {try {const res = await queryIsAuthorized(code, CURRENT_ENV);if (!res) {window.location.href = `${window.location.origin}/exception/403?code=${code}`;}return res;} catch (error) {console.log('获取权限失败', error);window.location.href = `${window.location.origin}/exception/403?code=${code}`;}});if (hasEditAuth) {return <Component />;}return null;
};export default withAuth;

实际项目引入

const ExperienceAUTH= () => {}
export default withAuth(ExperienceAUTH, VIEAuthXX);

这样以来没有权限的就看不到页面了,如果有其他需求,例如去404或申请权限则需要根据实际情况去布局页面了。一般后端会配置。

http://www.dtcms.com/a/482846.html

相关文章:

  • 什么是脚本语言?
  • AI智能体
  • 企业准备扩大规模时,如何选择第三方物流(3PL)合作伙伴
  • 阮一峰《TypeScript 教程》学习笔记——简介
  • Scope作用域
  • 网页设计网站名字上海企业电话查询
  • 论文阅读-IDFUZZ: Intelligent Directed Grey-box Fuzzing
  • [论文阅读]Progent: Programmable Privilege Control for LLM Agents
  • 内蒙古建设厅官网站自建本地网站服务器wordpress
  • 【愚公系列】《人工智能70年》078-AI塑造新人生(教育史上的“一场数字海啸“)
  • 数据分析-基础-二项分布
  • idea正则匹配搜索
  • Lombok @Data 注解在 Spring Boot 项目中的深度应用与实践指南
  • 电力电子技术 第一章——电力电子变换器
  • Spring Boot 项目启动报错:`Could not resolve type id ... no such class found` 终极解决方案!
  • 八方资源网做网站优化怎么样网络营销的主要传播渠道是
  • 基于python写的PDF表格提取到excel文档
  • 做贷款网站犯法吗wordpress 静态文件大
  • AWS CloudTrail:让每一次操作都“有迹可循”
  • 运动控制教学——5分钟了解雅可比矩阵!
  • BERT 中文外卖评价情感分析项目
  • [MySQL] 数据库的约束与设计
  • 用dw做的网页如何上传到网站wordpress安装后要删除哪些文件夹
  • dedecms 广告管理 js 网站变慢网站建设自查自评
  • 京东也要造车了
  • 株洲做网站三明注册公司
  • 网站开发 重庆南宁企业做网站
  • 减少Token措施
  • vue2实现地图的位图模式(图片处理),支持移动缩放鹰眼和打点等
  • 营销导向的企业网站优化建站图标素材