# 🔐 注册登录系统使用指南

## ✨ 系统概述

智慧农业生产管理系统已集成完整的用户认证授权功能，支持：
- ✅ 用户注册与登录
- ✅ 双重认证方式（密码登录 + 手机验证码登录）
- ✅ 图形验证码防护
- ✅ 会话管理与Token自动刷新
- ✅ 登录日志记录（时间、IP、设备信息）
- ✅ 安全退出登录
- ✅ 权限动态分配

---

## 🚀 功能特性

### 1. **用户注册** 📝

**注册入口**: 点击登录页面底部"立即注册"

**必填信息**:
- 用户名（3-20个字符，仅字母、数字、下划线）
- 真实姓名（2-20个字符）
- 手机号（11位手机号）
- 短信验证码
- 密码（至少6位）
- 确认密码
- 图形验证码

**可选信息**:
- 邮箱

**注册流程**:
1. 填写基本信息
2. 点击"发送验证码"获取手机验证码
3. 输入验证码和图形验证码
4. 点击"立即注册"
5. 注册成功后自动登录系统

**信息校验**:
- ✅ 用户名唯一性验证
- ✅ 手机号唯一性验证
- ✅ 密码强度验证
- ✅ 实时表单验证
- ✅ 手机号格式验证

---

### 2. **用户登录** 🔑

#### **方式一：密码登录**

- 用户名 + 密码
- 图形验证码

**测试账号**:
```
账号1：admin / admin123（系统管理员）
账号2：zhangsan / zhang123（普通用户）
```

#### **方式二：手机号登录**

- 手机号 + 短信验证码
- 图形验证码

**测试手机号**:
```
手机1：13800138000（admin）
手机2：13800138001（zhangsan）
测试验证码：123456
```

---

### 3. **安全机制** 🛡️

#### **图形验证码**
- 随机4位字符
- 点击图片或刷新按钮可更换
- 防止暴力破解

#### **会话管理**
- Token有效期：24小时
- 自动刷新机制
- 过期后自动登出

#### **登录日志**
系统自动记录：
- 登录时间
- 登录IP地址
- 设备信息（设备类型、浏览器、操作系统）
- 登录方式（密码/手机号）
- 登录状态（成功/失败）

#### **数据加密**
- Token加密存储
- 密码加密传输（实际部署时）
- LocalStorage安全存储

---

### 4. **用户权限** 👥

#### **角色类型**

**系统管理员（admin）**:
- 权限：`*`（全部权限）
- 可访问所有功能模块
- 可管理用户和系统配置

**部门经理（manager）**:
- 权限：`machinery:*`, `field:*`, `operation:*`
- 可访问农机、地块、农事模块
- 受限访问其他模块

**普通用户（user）**:
- 权限：`machinery:view`, `field:view`, `operation:view`
- 仅查看权限
- 无法修改和删除

---

### 5. **退出登录** 🚪

**退出方式**:
1. 点击右上角用户头像
2. 选择"退出登录"
3. 系统清除所有会话信息

**清除内容**:
- ✅ Token
- ✅ RefreshToken
- ✅ 用户信息
- ✅ 登录时间
- ✅ Session ID

---

## 📊 系统架构

### **认证流程**

```
┌─────────┐
│ 用户访问 │
└────┬────┘
     │
     ▼
┌─────────────┐    未登录    ┌──────────┐
│ 检查登录状态 │──────────────>│ 登录页面 │
└─────────────┘              └────┬─────┘
     │                            │
  已登录                      登录成功
     │                            │
     ▼                            ▼
┌─────────────┐              ┌──────────┐
│ 检查Token   │<─────────────│ 生成Token│
└─────┬───────┘              └──────────┘
      │
   有效/刷新
      │
      ▼
┌─────────────┐
│ 进入主系统  │
└─────────────┘
```

### **技术组件**

#### **1. AuthContext** (认证上下文)
- 全局状态管理
- 用户信息存储
- Token管理
- 登录/登出方法

#### **2. Login组件**
- 双重登录方式
- 图形验证码
- 表单验证
- 错误提示

#### **3. Register组件**
- 用户注册表单
- 实时验证
- 手机验证码
- 自动登录

#### **4. CaptchaInput组件**
- 图形验证码生成
- Canvas绘制
- 随机刷新

#### **5. authStorage** (存储管理)
- Mock用户数据库
- 密码验证
- 手机号验证
- Token生成
- 登录记录

---

## 🎯 使用示例

### **场景1：新用户注册**

```typescript
// 用户填写注册表单
{
  username: 'lisi',
  realName: '李四',
  phone: '13900139000',
  code: '123456',        // 手机验证码
  password: 'lisi123',
  confirmPassword: 'lisi123',
  email: 'lisi@example.com',
  captcha: 'AB12'        // 图形验证码
}

// 系统验证
1. 检查用户名是否已存在 ✓
2. 检查手机号是否已注册 ✓
3. 验证手机验证码 ✓
4. 验证密码强度 ✓
5. 创建用户账号 ✓
6. 自动登录系统 ✓
```

### **场景2：密码登录**

```typescript
// 用户输入
{
  username: 'admin',
  password: 'admin123',
  captcha: 'XY56'
}

// 系统处理
1. 验证图形验证码 ✓
2. 查找用户 ✓
3. 验证密码 ✓
4. 生成Token ✓
5. 记录登录日志 ✓
6. 更新最后登录信息 ✓
7. 进入系统 ✓
```

### **场景3：手机号登录**

```typescript
// 用户输入
{
  phone: '13800138000',
  code: '123456',
  captcha: 'MN89'
}

// 系统处理
1. 验证手机号格式 ✓
2. 验证图形验证码 ✓
3. 验证短信验证码 ✓
4. 查找用户 ✓
5. 生成Token ✓
6. 记录登录日志 ✓
7. 进入系统 ✓
```

---

## 🔒 安全最佳实践

### **开发环境（当前）**
- ✅ Mock数据库
- ✅ LocalStorage存储
- ✅ 测试验证码固定为123456
- ✅ 密码明文存储（仅测试）

### **生产环境（建议）**
- 🔐 使用真实数据库
- 🔐 密码bcrypt加密
- 🔐 HTTPS加密传输
- 🔐 真实短信服务
- 🔐 HttpOnly Cookie存储Token
- 🔐 CSRF防护
- 🔐 验证码有效期管理
- 🔐 登录失败次数限制
- 🔐 IP黑名单机制

---

## 📱 界面展示

### **登录页面**
- 🎨 绿色农业主题
- 🎨 渐变背景
- 🎨 双Tab切换（密码/手机号）
- 🎨 图形验证码
- 🎨 安全提示

### **注册页面**
- 📝 完整表单验证
- 📝 实时错误提示
- 📝 密码强度提示
- 📝 注册说明

### **用户菜单**
- 👤 用户头像
- 👤 基本信息展示
- 👤 个人中心入口
- 👤 退出登录

---

## 🎉 快速开始

### **1. 测试登录**
```
访问系统 → 使用测试账号登录 → 进入主系统
```

### **2. 测试注册**
```
访问系统 → 点击"立即注册" → 填写信息 → 获取验证码 → 注册成功
```

### **3. 测试登出**
```
进入系统 → 点击右上角用户名 → 选择"退出登录"
```

---

## 🆘 常见问题

**Q: 忘记密码怎么办？**
A: 当前版本暂不支持密码找回，请联系管理员重置。

**Q: 验证码收不到？**
A: 测试环境使用固定验证码：123456

**Q: 为什么会自动退出？**
A: Token有效期为24小时，过期后会自动退出。

**Q: 可以同时登录多个设备吗？**
A: 可以，每个设备独立维护会话。

**Q: 如何查看登录记录？**
A: 管理员可在"中心配置管理 → 日志管理 → 登录日志"查看。

---

## 📞 技术支持

- 📧 邮箱：support@agriculture.com
- 📱 电话：400-xxx-xxxx
- 💬 在线客服：工作日 9:00-18:00

---

**系统版本**: v1.0.0  
**更新日期**: 2024-10-15  
**文档作者**: 智慧农业开发团队
