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. 使用 `Admin` 或 `User` 等非 `super` 角色登录系统; 4. 登录后观察跳转行为,随后点击返回按钮回到主页面,查看 tab 标签栏状态。 #### 期望的结果是什么?\* 1. **用户退出时,系统需同时完成**: * 彻底销毁当前用户的会话信息(含登录状态、角色权限等); * 清除登录页 URL 中的 `redirect` 参数,使登录页地址恢复为纯净形式(如 `http://localhost:9527/login`); * 清空 tab 标签栏中存储的上一用户标签列表。 2. **非 `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错误,未引入新的页面异常或功能冲突。

相关推荐
2401_8734794010 小时前
运营活动被薅羊毛怎么防?用IP查询+设备指纹联动封堵漏洞
java·网络·tcp/ip·github
哆哆啦0014 小时前
使用 Obsidian + GitHub Actions + GitHub Pages 搭建内容发布流
数据库·笔记·github·obsidian
厚皮龙16 小时前
使用 SSH 密钥上传 GitHub 仓库流程
运维·ssh·github
2601_9557819818 小时前
OpenClaw快速接入Ollama本地模型教程
github·open claw安装·open claw部署
Dvesiz18 小时前
【ClaudeCode平替(免费)】OpenCode 完整安装与 VSCode 使用指南
ide·vscode·编辑器·github·ai编程·claude·visual studio code
初圣魔门首席弟子20 小时前
bug 2026.05.15(以前能运行的java springboot项目突然间不能运行后台数据了)
java·开发语言·bug
Hommy881 天前
【剪映小助手】音频信息生成接口
开源·github·剪映小助手
Kakaa1 天前
AI 帮我写了一万行代码,但我已经看不懂自己的项目了
github
Desenberg1 天前
【Claude Code】因为中途修改配置路径导致Claude Code 插件安装失败
windows·bug