# 组织模块未登录回跳 - 手工验证报告

- 模块: `organization`
- 日期: `2026-02-25`
- 类型: `manual`
- 需求: 未登录访问系统页面时，登录后自动回跳原页面

## 1. 变更范围

- 前端鉴权重定向逻辑
- 登录页成功后的目标路由解析
- 组织模块文档同步（PRD/UI/测试场景/变更日志）

## 2. 验证方式与结果

### 2.1 静态检查

- 命令:
```bash
cd frontend && npx eslint src/lib/auth-redirect.ts src/hooks/useAuthGuard.ts 'src/app/(auth)/login/page.tsx' src/lib/api.ts src/lib/api-client.ts 'src/app/(core)/notifications/page.tsx' 'src/app/(modules)/contracts/page.tsx' 'src/app/(modules)/expenses/page.tsx' 'src/app/(modules)/purchases/page.tsx'
```
- 结果: ❌ 失败（仓库既有问题）
- 说明:
  - 多个历史文件存在 `@typescript-eslint/no-explicit-any` 违反（本次改动前已存在）
  - `useAuthGuard.ts` 触发 `react-hooks/set-state-in-effect`（既有实现风格）
  - 本次新增文件 `src/lib/auth-redirect.ts` 无单独报错

### 2.2 逻辑复核（代码审查）

- `useAuthGuard` 未登录时跳转改为 `/login?redirect=当前路径`
- `api.ts` / `api-client.ts` 的 401 跳转统一改为携带 `redirect`
- 登录页读取 `redirect` 参数并在登录成功后回跳
- 回跳目标做安全校验：
  - 仅允许站内相对路径
  - 禁止 `//`、外部地址、`/login` 自身回跳
  - 非法/缺失时回退 `/overview`

## 3. 结论

- 本次需求的核心逻辑已落地，代码路径覆盖了：
  - 页面守卫触发未登录
  - API 401 触发未登录
  - 登录成功后的目标恢复
- 阻断项为仓库既有 ESLint 问题，未在本次需求内扩修。
