|
|
# 登录页面
|
|
|
|
|
|
> 最后更新: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存储 | localStorage,key=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数据
|
|
|
|
|
|
**POST /api/admin/login 成功:**
|
|
|
```json
|
|
|
{ "code": 0, "message": "success", "data": { "token": "eyJhbGciOiJIUzI1NiJ9.admin.8h", "expiresIn": 28800 }}
|
|
|
```
|
|
|
|
|
|
**POST /api/admin/login 成功(记住我):**
|
|
|
```json
|
|
|
{ "code": 0, "message": "success", "data": { "token": "eyJhbGciOiJIUzI1NiJ9.admin.7d", "expiresIn": 604800 }}
|
|
|
```
|
|
|
|
|
|
**POST /api/admin/login 失败:**
|
|
|
```json
|
|
|
{ "code": 40001, "message": "用户名或密码错误", "data": null }
|
|
|
```
|
|
|
|
|
|
**POST /api/admin/login 失败(IP锁定):**
|
|
|
```json
|
|
|
{ "code": 40003, "message": "登录失败次数过多,请15分钟后重试", "data": null }
|
|
|
```
|