注册功能说明.md 7.4 KB

用户注册功能说明

✅ 已实现的功能

1. 前端页面

登录页面 (books/pages/login/login.vue)

  • ✅ 添加了"还没有账号?立即注册"链接
  • ✅ 点击链接跳转到注册页面
  • ✅ 支持从注册页面返回时自动填充用户名

注册页面 (books/pages/register/register.vue)

  • ✅ 注册表单包含以下字段:
    • 用户名(必填)
    • 昵称(可选,默认使用用户名)
    • 密码(必填,6-20位)
    • 确认密码(必填,需与密码一致)
    • 手机号(可选)
    • 邮箱(可选)
  • ✅ 表单验证:
    • 用户名不能为空
    • 密码长度6-20位
    • 确认密码必须与密码一致
    • 手机号格式验证(如果填写)
    • 邮箱格式验证(如果填写)
  • ✅ 密码显示/隐藏切换
  • ✅ 注册成功后跳转到登录页面,并自动填充用户名
  • ✅ 错误提示和成功提示

2. 后端接口

注册接口 (POST /api/user/register)

  • ✅ 接收注册数据(用户名、密码、昵称、手机号、邮箱)
  • ✅ 参数验证:
    • 用户名不能为空
    • 密码不能为空
    • 密码长度6-20位
  • ✅ 业务验证:
    • 检查用户名是否已存在
    • 检查手机号是否已被注册(如果填写)
    • 检查邮箱是否已被注册(如果填写)
  • ✅ 密码MD5加密存储
  • ✅ 空字符串自动转换为null
  • ✅ 返回注册成功的用户信息

3. 数据库存储

  • ✅ 用户数据存储到 users
  • ✅ 密码使用MD5加密存储
  • ✅ 默认状态为启用(status = 1)
  • ✅ 默认非VIP用户(is_vip = 0)
  • ✅ 自动生成创建时间和更新时间

📋 数据库表结构

CREATE TABLE `users` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `username` VARCHAR(50) NOT NULL COMMENT '用户名',
  `nickname` VARCHAR(50) DEFAULT NULL COMMENT '昵称',
  `avatar` VARCHAR(255) DEFAULT NULL COMMENT '头像URL',
  `phone` VARCHAR(20) DEFAULT NULL COMMENT '手机号',
  `email` VARCHAR(100) DEFAULT NULL COMMENT '邮箱',
  `password` VARCHAR(255) NOT NULL COMMENT '密码(MD5加密)',
  `is_vip` TINYINT(1) DEFAULT 0 COMMENT '是否VIP:0-否,1-是',
  `vip_expire_time` DATETIME DEFAULT NULL COMMENT 'VIP过期时间',
  `status` TINYINT(1) DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
  `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_username` (`username`),
  KEY `idx_phone` (`phone`),
  KEY `idx_email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';

🚀 使用流程

1. 用户注册流程

  1. 打开登录页面

    • 用户看到登录页面
    • 点击"还没有账号?立即注册"链接
  2. 填写注册信息

    • 输入用户名(必填)
    • 输入密码(必填,6-20位)
    • 输入确认密码(必填,需与密码一致)
    • 可选:输入昵称、手机号、邮箱
  3. 提交注册

    • 点击"注册"按钮
    • 前端进行表单验证
    • 验证通过后调用后端注册接口
  4. 注册成功

    • 后端验证用户名、手机号、邮箱是否已存在
    • 密码MD5加密后存储到数据库
    • 返回注册成功的用户信息
    • 前端跳转到登录页面,自动填充用户名
    • 用户输入密码即可登录

2. 错误处理

  • 用户名已存在:显示"用户名已存在"
  • 手机号已被注册:显示"手机号已被注册"
  • 邮箱已被注册:显示"邮箱已被注册"
  • 密码长度不符合要求:显示"密码长度必须在6-20位之间"
  • 两次密码不一致:显示"两次输入的密码不一致"
  • 手机号格式错误:显示"请输入正确的手机号"
  • 邮箱格式错误:显示"请输入正确的邮箱地址"
  • 网络错误:显示"注册失败,请检查网络连接"

📝 API接口说明

注册接口

请求地址POST /api/user/register

请求头

Content-Type: application/json

请求参数

{
  "username": "testuser",        // 必填,用户名
  "password": "123456",          // 必填,密码(6-20位)
  "nickname": "测试用户",        // 可选,昵称
  "phone": "13800138000",        // 可选,手机号
  "email": "test@example.com"    // 可选,邮箱
}

响应示例

{
  "code": 200,
  "message": "注册成功",
  "data": {
    "id": 1,
    "username": "testuser",
    "nickname": "测试用户",
    "avatar": null,
    "phone": "13800138000",
    "email": "test@example.com",
    "isVip": false,
    "status": 1
  }
}

错误响应

{
  "code": 500,
  "message": "用户名已存在",
  "data": null
}

🔍 测试步骤

1. 启动后端服务

cd book
mvn spring-boot:run

2. 启动前端项目

在微信开发者工具中打开 books 项目

3. 测试注册功能

  1. 打开登录页面

    • 在微信开发者工具中打开登录页面
  2. 点击注册链接

    • 点击"还没有账号?立即注册"
    • 应该跳转到注册页面
  3. 填写注册信息

    • 用户名:testuser
    • 密码:123456
    • 确认密码:123456
    • 昵称:测试用户(可选)
    • 手机号:13800138000(可选)
    • 邮箱:test@example.com(可选)
  4. 提交注册

    • 点击"注册"按钮
    • 应该显示"注册成功"提示
    • 自动跳转到登录页面
    • 用户名应该自动填充
  5. 登录测试

    • 在登录页面输入密码
    • 点击"登录"按钮
    • 应该能够成功登录

4. 测试错误情况

  1. 用户名已存在

    • 使用已存在的用户名注册
    • 应该显示"用户名已存在"错误
  2. 密码长度不符合要求

    • 输入少于6位的密码
    • 应该显示"密码长度不能少于6位"错误
  3. 两次密码不一致

    • 输入不同的密码和确认密码
    • 应该显示"两次输入的密码不一致"错误
  4. 手机号格式错误

    • 输入格式错误的手机号
    • 应该显示"请输入正确的手机号"错误
  5. 邮箱格式错误

    • 输入格式错误的邮箱
    • 应该显示"请输入正确的邮箱地址"错误

📌 注意事项

  1. 密码加密:密码使用MD5加密存储,前端传输的是明文密码

  2. 唯一性检查

    • 用户名必须唯一
    • 手机号如果填写,必须唯一
    • 邮箱如果填写,必须唯一
  3. 空值处理

    • 如果手机号或邮箱为空字符串,会自动转换为null
    • 如果昵称为空,默认使用用户名
  4. 数据验证

    • 前端进行基本格式验证
    • 后端进行业务逻辑验证
    • 数据库层面有唯一性约束
  5. 安全性

    • 密码使用MD5加密(生产环境建议使用BCrypt等更安全的加密方式)
    • 前端验证不能替代后端验证
    • 建议添加验证码防止恶意注册

🔄 后续优化建议

  1. 密码强度验证:添加密码强度检查(包含字母、数字等)

  2. 验证码:添加图形验证码或短信验证码

  3. 邮箱验证:注册后发送验证邮件

  4. 手机号验证:注册时发送短信验证码

  5. 密码加密升级:使用BCrypt等更安全的加密方式

  6. 注册协议:添加用户协议和隐私政策

  7. 第三方注册:支持微信、QQ等第三方注册


创建时间:2024年 最后更新:2024年