You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
haoliang-net/docs/02-功能清单/管理后台/01-登录/01-01-登录页面.md

4.6 KiB

登录页面

最后更新2026-04-25 状态:已设计


1. 基本信息

路由 /login
入口 未登录时自动跳转或Token过期后跳转

2. 界面布局

┌──────────────────────────────────────────────────────────┐ │ │ │ ┌────────────────────────┐ │ │ │ CNC机床数据采集系统 │ │ │ │ │ │ │ │ 用户名:[] │ │ │ │ 密 码:[] │ │ │ │ │ │ │ │ [√ 记住我] │ │ │ │ │ │ │ │ [登 录] │ │ │ └────────────────────────┘ │ │ │ └──────────────────────────────────────────────────────────┘

3. 表单字段

字段 控件 必填 默认值 校验 联动
用户名 el-input maxlength=50 - 必填 -
密码 el-input type=password maxlength=50 show-password - 必填 -
记住我 el-checkbox 不勾选 - 勾选后Token有效期延长

4. 操作按钮

名称 位置 显示条件 点击行为
登录 表单底部 始终 校验→调登录API→成功存Token跳转仪表盘

5. 交互流程

  • 进入未登录访问管理后台→axios拦截40101→清除旧Token→router.push(/login)
  • 登录:填写用户名+密码→点击登录→loading+disabled→调登录API→成功→存Token到localStorage→跳转/dashboard
  • 登录失败用户名或密码错误→el-message error显示错误信息→密码框清空+聚焦
  • Token过期访问任意管理后台页面→API返回40101→清除Token→跳转/login带redirect参数登录后跳回原页面

6. 安全规范

规则
Token存储 localStoragekey=token
Token传递 Authorization: Bearer {token}
Token有效期 默认8小时勾选"记住我"延长至7天
Token刷新 不做刷新机制,过期直接跳转登录页
密码传输 HTTPS生产环境开发环境HTTP
登录失败提示 统一提示"用户名或密码错误",不区分是哪个错
防暴力破解 同一IP连续5次失败锁定15分钟后端实现
单角色 仅admin角色无角色切换无注册功能

7. 数据需求

以下为本页面需要的数据,数据库设计定稿时需覆盖。参考 01-数据库设计.md 草案。

数据需求 草案对应 说明
用户名/密码验证 后端硬编码或配置文件 单角色admin无需用户表
Token生成与验证 cnc_sys_config (api_token) Token值存配置表但登录流程需后端生成JWT或类似Token
Token有效期 cnc_sys_config 记住我模式下延长有效期

8. 接口引用与数据结构

Mock/正式API的URL、HTTP方法均定义在 03-API接口设计.md §3.1 端点清单,本节仅引用编号并定义返回数据结构。

接口引用

接口名称 端点编号 界面用途
管理员登录 §3.1 #1 登录表单提交获取Token

数据结构

管理员登录§3.1 #1

Request body

{ "username": "admin", "password": "admin123", "rememberMe": true }

成功 Response不记住我

{ "code": 0, "message": "success", "data": { "token": "eyJhbGciOiJIUzI1NiJ9.admin.8h", "expiresIn": 28800 }}

成功 Response记住我

{ "code": 0, "message": "success", "data": { "token": "eyJhbGciOiJIUzI1NiJ9.admin.7d", "expiresIn": 604800 }}

失败 Response用户名或密码错误

{ "code": 40001, "message": "用户名或密码错误", "data": null }

失败 ResponseIP锁定

{ "code": 40003, "message": "登录失败次数过多请15分钟后重试", "data": null }