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错误,未引入新的页面异常或功能冲突。
相关推荐
Mr.朱鹏10 小时前
Git 仓库同时推送到 Gitee 与 GitHub 配置指南
git·gitee·开源·github
All for pursuit.12 小时前
FastAPI+Ollama 部署本地AI大模型对话助手
python·github·aigc·ollama
u13013013 小时前
GitHub 热榜项目:日榜(2026-09-18)
人工智能·github
troy1281 天前
Python 基础语法(九):Django/Flask/FastAPI 三大 Web 框架详细对比解析
python·jupyter·django·flask·github·fastapi
Keven_111 天前
Bug:UVA816
bug
dong_junshuai1 天前
每天一个开源项目#103 BrowserSkill:4.7K星,Agent接管真实浏览器
开源·github·agent
dong_junshuai1 天前
每天一个开源项目#102 六阶段代码复核流程范式
开源·github·agent
峰向AI1 天前
别再给 AI 助手单独付费了,腾讯开源 3.6K 星标的全家共享平台
github
逛逛GitHub1 天前
我近期看到的最有创意的 GitHub 开源项目,太惊艳了。
github
m4Rk_1 天前
【论文阅读】Agent 记忆机制(73):MemGAS——让长期对话记忆按问题选择粒度并关联证据
论文阅读·人工智能·学习·开源·github