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

react 修复403页面无法在首页跳转问题

文章目录

  • 问题描述
  • 解决方案

问题描述

当用户在应用首页即触发权限错误时,系统无法正确跳转到403页面,而是正常显示首页,而点击任意导航栏时才能跳转403界面。通过分析,发现问题的在于: 在应用初始化阶段,路由实例尚未完全创建,但权限验证已经开始执行 ,导致403跳转时 router 对象为 null
也就是说,原AccessStore代码初始化如下:

constructor(){this.router = null;
}

router只有在后续的一个守卫组件中调用createHashRouter才会设置。
而控制跳转代码如下:

if (status === 403) {// 跳转到 403 页面accessStore.getRouter()?.navigate('/403');return false;}

这就导致一个问题:
应用的权限验证流程在 accessStore的一个函数中进行,这个函数发生在组件挂载早期。而完整的路由配置依赖于权限表的加载。当权限验证过程中出现403错误时,尝试通过 accessStore.getRouter()?.navigate('/403') 跳转,但此时 router 可能尚未初始化。
也就是说如果在 router 设置之前就发生了403错误, accessStore.getRouter() 会返回 null ,导致 navigate 方法无法调用。

解决方案

AccessStore 构造函数中提前初始化一个最小化的路由实例 ,确保即使在应用早期也能处理403跳转:

constructor() {this.router = null;// 尝试提前初始化一个基本的router实例,避免在应用早期出现403错误时无法跳转try {// 创建一个最小化的路由配置const minimalRoutes: RouteObject[] = [{path: '/403',element: <DefaultForbiddenView />,},];this.router = createHashRouter(minimalRoutes);} catch (error) {console.warn('Failed to initialize minimal router during AccessStore construction:', error);}}

也就是在 AccessStore 实例创建时(应用启动的最早阶段之一)就初始化一个只包含403页面的路由。这个最小化路由确保即使在完整路由配置加载前,系统也能处理权限错误跳转。


感觉说的乱七八糟的……总之是今天临时提出来的一个bug,后面有时间再整理一下吧。

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

相关文章:

  • 学子网站建设郑州门户网站建设哪家好
  • 新乡网站优化公司看市场行情用什么软件
  • SQL注入原理与方法
  • 如何将Vue 项目转换为 Android App(使用Capacitor)
  • 输出端口原理图分析
  • 响应式网站建设有利于seo常熟做网站公司
  • php购物网站开发设计免费网站软件app
  • CTF攻防世界WEB精选基础入门:disabled_button
  • 昂瑞微:引领射频前端国产化浪潮,铸就5G时代核心竞争力
  • 基于SpringBoot的高校教师科研项目信息管理系统
  • 富文本返回的Html数据格式化
  • 昂瑞微冲刺科创板:创新驱动,引领射频芯片国产化新征程
  • 基于Java(Spring Boot)+MySQL实现电商网站
  • 记录一次生产环境数据库死锁的处理过程
  • 首先确定网站建设的功能定位seo推广工具
  • Nestjs框架: Pino 与 Pino-Elasticsearch 组合实现高性能日志写入与检索的完整方案
  • 走近实验技术中的“四大发明”之Southern blot、Northern blot和Western blot
  • 网站建设需求文档模板下载想做电商从哪里入手
  • ai做网站建站做得好的公司
  • 网络层--数据链路层
  • 网站设计应该遵循哪些原则手机网站打开手机app
  • 【AI安全】Qwen3Guard: 实时流式检测实现AI模型安全防护新标杆
  • 网络攻防技术:网络安全攻击概述
  • 【开题答辩全过程】以 “有客”旅游小助手平台为例,包含答辩的问题和答案
  • 如何创建网站难吗wordpress创建公告
  • 探索MySQL存储过程的性能优化技巧与最佳实践
  • UNIX下C语言编程与实践62-UNIX UDP 编程:socket、bind、sendto、recvfrom 函数的使用
  • UNIX下C语言编程与实践64-UNIX 并发 Socket 编程:I/O 多路复用 select 函数与并发处理
  • 世界杯哪个网站做代理跨境电商网站系统开发
  • SNK施努卡CCD视觉检测系统