duxingchen
17b2fab5ca
fix(audit): 补齐「退出」留痕 + 登录记录显示中文操作人
【问题①:退出动作在审计里完全不可见】
根因:后端没有 logout 接口。前端「退出」只清本地 localStorage、不产生任何
请求,中间件自然无从采集(中间件里早已预留 "logout" 动作映射,但端点没做)。
- 新增 POST /auth/logout,【仅用于留痕】。JWT 无状态,服务端本就没有可吊销
的会话,该接口不做任何令牌失效动作 —— 它存在的唯一目的,是让审计记下
「谁在何时退出了系统」。这点在 docstring 里写明,免得日后被误当安全边界。
- 挂 Depends(get_current_user),让 JWT 依赖把操作人写进 request.state,
从而记录到真实姓名而非「未认证」
- 前端 logout 改为【先上报、后清 token】。顺序不能反:api.ts 的请求拦截器
是从 localStorage 取 token 的,清掉后就发不出这个请求了。
刻意不 await、失败也不阻断 —— 用户点「退出」必须退得掉。
【问题②:登录记录的「操作人」显示英文账号而非中文名】
根因:登录接口只写了 request.state.audit_user(账号),没写 audit_display_name
—— 那一刻还不知道显示名。前端按 display_name || user_id 渲染,于是退化成账号。
- 改为登录成功后补写 display_name / role。可行的原因是中间件在 call_next
返回【之后】才落库,此刻写 request.state 依然能被采集到。
- 失败登录走不到这一步,保持「只有账号可追责」(密码绝不落库),语义不变。
2026-09-21 11:20:59 +08:00
..
2026-08-04 17:09:47 +08:00
2026-09-02 10:38:53 +08:00
2026-08-07 12:35:00 +08:00
2026-09-21 02:23:19 +00:00
2026-09-21 11:20:59 +08:00
2026-09-16 14:29:56 +08:00
2026-09-01 13:53:24 +08:00
2026-08-28 15:08:05 +08:00
2026-08-12 12:03:12 +08:00
2026-08-12 12:03:12 +08:00
2026-08-12 12:04:40 +08:00
2026-08-12 12:04:40 +08:00
2026-09-07 13:43:06 +08:00
2026-08-12 12:04:40 +08:00
2026-09-15 10:57:46 +08:00
2026-08-12 17:19:56 +08:00
2026-08-05 14:00:43 +08:00
2026-08-06 10:08:18 +08:00
2026-09-17 17:05:42 +08:00