GitHub Bug反馈与修复全流程指南

GitHub Bug反馈与修复全流程指南

本文档包含从发现Bug、提交Issue,到代码修复、提交PR的完整操作步骤,以"角色切换登录权限异常"问题为例,提供可复用的模板和操作规范。

一、提交Bug反馈(创建Issue)

在目标仓库的GitHub页面,点击「Issues」→「New issue」,选择Bug模板(若无则选「Open a blank issue」),按以下结构填写。

Add a title*

Bug: 不同角色在同一设备登录后,因残留 redirect 参数及 tab 标签数据导致权限问题

软件版本*

当前代码的版本 如:v2.1.2

重现步骤*

  1. super 角色登录系统,访问特定页面 http://localhost:9527/function/super-page
  2. 执行退出登录操作,观察到登录页 URL 保留跳转参 redirect=/function/super-page(即登录页地址为 http://localhost:9527/login?redirect=/function/super-page);
  3. 使用 AdminUser 等非 super 角色登录系统;
  4. 登录后观察跳转行为,随后点击返回按钮回到主页面,查看 tab 标签栏状态。

期望的结果是什么?*

  1. 用户退出时,系统需同时完成
  • 彻底销毁当前用户的会话信息(含登录状态、角色权限等);
  • 清除登录页 URL 中的 redirect 参数,使登录页地址恢复为纯净形式(如 http://localhost:9527/login);
  • 清空 tab 标签栏中存储的上一用户标签列表。
  1. super 角色登录后
  • 不继承残留的 redirect 参数,不强制跳转至 /function/super-page
  • tab 标签栏为全新无残留状态;
  • 自动引导至对应角色的默认首页或合法页面,无权限错误。

实际的结果是什么?*

  1. 退出登录后,登录页 URL 仍保留 redirect=/function/super-page 参数;
  2. super 角色登录后,被强制跳转至仅 super 可访问的 /function/super-page,触发 403 错误;
  3. 点击返回按钮回到主页面后,tab 标签栏残留上一用户(super 角色)打开的标签列表,当前用户可见但部分页面因权限不足无法访问。

二、修复Bug并提交代码(开发流程)

步骤1:Fork原仓库

  • 进入目标仓库(如soybean-admin-react),点击右上角「Fork」按钮。
  • 在个人GitHub账号下生成仓库副本,获得该副本的完全修改权限。

步骤2:克隆副本到本地

  • 打开个人账号下的Fork仓库,复制HTTPS或SSH格式的克隆地址。
  • 在本地终端执行命令:git clone 你的克隆地址,将仓库拉取到本地电脑。

步骤3:本地开发与修改

  1. 进入本地仓库目录,基于原仓库主分支(如main/master)新建分支,避免直接修改主分支,命令示例:git checkout -b fix/clear-redirect-param-80(后缀加Issue号便于关联)。
  2. 定位代码问题,修改核心逻辑(如在退出登录函数中添加redirect参数清除、tab数据清空逻辑)。

步骤4:提交代码到个人Fork仓库

  1. 执行git add .,添加所有修改过的文件。
  2. 执行git commit -m "fix(auth): 退出时清除redirect参数与tab数据,解决角色切换403问题 (#80)", commit信息需关联Issue号并说明目的。
  3. 执行git push origin 你的分支名,将本地代码推送到个人Fork仓库的对应分支。

步骤5:向原仓库提交PR(Pull Request)

  1. 进入个人Fork仓库,页面会自动提示「Compare & pull request」,点击进入;若无则手动点击「Pull requests」→「New pull request」。
  2. 选择代码来源与目标:「head repository」选个人Fork仓库,「compare」选自己修改的分支;「base repository」选原仓库,「base」选主分支(如main)。
  3. 填写PR标题和描述(参考下文模板),确认信息无误后点击「Create pull request」。

三、PR描述填写模板(以修复#80为例)

PR标题

Fixes #80 修复不同角色切换登录的权限异常问题

1. 修复的问题

同一设备切换角色登录时,因退出登录未清理两类数据导致权限异常:

  • 登录页URL残留redirect=/function/super-page参数,非super角色登录后被强制跳转至无权限页面,触发403错误。
  • tab标签栏残留上一用户的页面列表,当前用户可见但部分页面无权限访问。

2. 核心修改逻辑

围绕"退出登录时彻底清除残留数据"展开,涉及4个文件的修改,确保"退出即重置":

  1. auth.ts(核心退出逻辑)

    新增toLogout函数,整合完整退出流程:调用clearAuthStorage()清除本地认证信息、dispatch(resetAuthAction())重置全局权限状态、clearTabs()清空tab数据、resetRoutes()重置路由配置,最终通过navigate('/login', { replace: true })跳转至无参数的纯净登录页。

  2. tabHooks.ts(tab数据清理工具)

    新增useClearTabs自定义钩子,提供clearTabs方法:调用localStg.remove('globalTabs')删除本地存储的tab数据,通过dispatch(clearTabData())清空状态管理中的tab数据。

  3. tabStore.ts(tab状态管理)

    新增clearTabData action,将tab状态重置为initialState(初始空状态),配合tabHooks.ts完成全局tab数据清理。

  4. UserAvatar.tsx(退出入口)

    修改退出触发逻辑:引入useLogout获取toLogout方法,在退出确认的onOk回调中,用toLogout()替代原navigate('/login-out'),确保执行完整清理流程。

3. 测试验证

已在本地环境完成多轮测试,验证结果如下:

  • super角色登录并访问/function/super-page后退出,登录页URL无redirect参数。
  • Admin/User角色登录时,不跳转至无权限页面,自动进入对应角色的默认首页。
  • 登录后tab标签栏无任何残留数据,仅显示当前角色可访问的初始标签。
  • 全流程无403错误,未引入新的页面异常或功能冲突。
相关推荐
峰向AI19 小时前
Superpower 不是最「聪明」的,这个开源项目让模型学会资深工程师的肌肉记忆
github
YuePeng19 小时前
卖了几年的 BI 模块突然免费:24 种图表,一条 SQL 一张图
github
dong_junshuai19 小时前
每天一个开源项目#82 9.2K星God's Eye View:公开信号3D地球
开源·github
简创AIGC陶先生20 小时前
第1章:项目全景与架构总览
github
怕浪猫20 小时前
ZCode 周末送额度活动开启:3 亿 Token 免费领取
github
P1Browser21 小时前
指纹浏览器安全吗?从浏览器环境隔离、数据存储到安全风险解析
网络·tcp/ip·安全·网络安全·github·php
todoitbo1 天前
用蓝耘元生代做 GitHub 热榜解读:Dify Chatflow 接入和真实项目分析
ai·github·api·dify·蓝耘
猫头虎1 天前
GitHub 入门教程:如何加入并为开源项目贡献代码
gitee·开源·gitlab·github·开放原子·开源协议·gitcode
樱花落木兰1 天前
Git 超全零基础教程|三区原理、全套命令、分支协作、冲突解决、IDEA 集成(面试必备)
ide·git·json·github
TunerT_TQ1 天前
IBM |css-gridish 源码分析:4 个 JavaScript 文件背后的 CSS Grid 可视化工具
开源·github·资讯