You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.7 KiB
3.7 KiB
用户资料系统
概述
用户资料系统允许已登录用户查看和编辑个人信息,包括基本信息、个人简介、头像等,还可以修改密码。
功能特性
1. 基本信息管理
- 用户名(必填)
- 邮箱地址
- 昵称
- 个人简介
- 头像URL
2. 密码管理
- 修改密码(需要验证当前密码)
- 密码强度验证
- 密码确认匹配验证
3. 账户信息展示
- 用户ID
- 注册时间
- 最后更新时间
- 用户角色
技术实现
后端接口
获取用户资料
- 路由:
GET /profile - 权限: 需要登录
- 功能: 显示用户资料页面
更新用户资料
- 路由:
POST /profile/update - 权限: 需要登录
- 参数:
{ "username": "用户名", "email": "邮箱", "name": "昵称", "bio": "个人简介", "avatar": "头像URL" }
修改密码
- 路由:
POST /profile/change-password - 权限: 需要登录
- 参数:
{ "oldPassword": "当前密码", "newPassword": "新密码", "confirmPassword": "确认新密码" }
前端实现
页面模板
- 文件位置:
src/views/page/profile/index.pug - 布局: 使用
page.pug布局,包含导航栏和页脚
样式文件
- 文件位置:
public/css/page/profile.css - 特性: 响应式设计,现代化UI,表单验证样式
JavaScript交互
- 文件位置:
public/js/profile.js - 功能: 表单提交、实时验证、消息提示、加载状态
数据库结构
用户表字段
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
password VARCHAR(100) NOT NULL,
role VARCHAR(100) NOT NULL,
name VARCHAR(100), -- 新增:昵称
bio TEXT, -- 新增:个人简介
avatar VARCHAR(500), -- 新增:头像URL
status VARCHAR(20) DEFAULT 'active', -- 新增:用户状态
phone VARCHAR(100),
age INTEGER UNSIGNED,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
使用方法
1. 运行数据库迁移
# 添加新的用户资料字段
npm run migrate:latest
2. 访问用户资料页面
- 登录后访问
/profile路径 - 页面会自动加载当前用户信息
3. 编辑用户资料
- 在基本信息表单中修改相应字段
- 点击"保存更改"提交修改
- 系统会验证必填字段并显示操作结果
4. 修改密码
- 在密码修改表单中输入当前密码和新密码
- 系统会验证密码强度和匹配性
- 修改成功后表单会自动清空
安全特性
- 身份验证: 所有接口都需要用户登录
- 密码加密: 使用bcrypt进行密码哈希
- 输入验证: 前端和后端双重验证
- SQL注入防护: 使用参数化查询
- XSS防护: 输出转义和内容安全策略
错误处理
系统提供友好的错误提示:
- 表单验证错误
- 网络请求错误
- 服务器错误
- 权限不足错误
响应式设计
页面支持多种设备:
- 桌面端:双列布局
- 平板端:自适应布局
- 移动端:单列布局,触摸友好
浏览器兼容性
- Chrome 60+
- Firefox 55+
- Safari 12+
- Edge 79+
开发说明
添加新字段
- 创建数据库迁移文件
- 更新UserModel和UserService
- 修改前端表单和验证逻辑
- 更新API接口
自定义样式
CSS文件使用模块化设计,可以轻松修改:
- 颜色主题
- 布局结构
- 动画效果
- 响应式断点
扩展功能
可以基于现有架构添加:
- 头像上传
- 社交媒体链接
- 隐私设置
- 通知偏好