17b2fab5cac3182576b7c60f4c1242c3ce0fb81a
【问题①:退出动作在审计里完全不可见】 根因:后端没有 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 依然能被采集到。 - 失败登录走不到这一步,保持「只有账号可追责」(密码绝不落库),语义不变。
Description
IRIS生成管理APP
Languages
Python
36.2%
TypeScript
33.8%
Vue
27.5%
JavaScript
1.3%
CSS
0.3%
Other
0.9%