2.0 KiB
2.0 KiB
Why
管理员创建用户、重置密码、建租户下发的都是临时/初始密码,但系统没有「首登强制改密」机制——临时密码可被长期使用,一旦泄漏即越权。企业后台需要一条强制闭环:拿到临时密码 → 首登被拦 → 改密 → 才可用系统。
What Changes
- 待改密标记:
user新增must_change_password(布尔,默认 false);管理员重置密码、createTenant下发随机密码时置 true,管理员创建用户时默认强制(可关闭),用户自行改密成功后清 false。 - 登录返回标志:登录响应新增
mustChangePassword。 - 后端硬门禁:未改密用户仅可访问「修改本人密码 / 登出」,其余接口返回 403。
- 前端强制流程:登录后若待改密,强制跳转改密页并拦截其它路由;改密成功后清会话、跳登录重新认证。
Capabilities
New Capabilities
frontend/AD/force-password-change: 首登强制改密页面与路由守卫(强制跳转、改密后重新登录)。
Modified Capabilities
shared/data-model:user实体新增must_change_password待改密标记。shared/api-contract: 登录响应新增mustChangePassword标志。backend/auth: 登录返回待改密标志、改密清除标志、新增「待改密门禁」。frontend/AD/user: 创建用户表单新增「首登强制改密」配置项。
Impact
- 后端:
auth(login 返回标志、changePassword 清标志、JwtAuthGuard 加门禁)、users(createUser 接受 mustChangePassword 参数、resetPassword 置标记)、tenants(createTenant 置标记)、tenant-template(initTenant 加 forcePasswordChange 选项);Prisma migration(sys_user加列)。 - 前端:登录 store 保存待改密状态、路由守卫拦截、新增强制改密页、用户创建表单加「首登强制改密」开关、
api/auth.ts类型扩展。 - 数据:Prisma migration(
sys_user加must_change_password)。