starsac bb9e208381 feat: 添加文档管理系统前后端基础功能
- 新增后端FastAPI应用,包含用户管理、文档管理和操作日志功能
- 实现JWT认证机制,支持用户注册、登录、登出操作
- 添加数据库模型定义,包括用户表、文档表和操作日志表
- 实现文档的增删改查功能及权限控制
- 添加管理员功能,支持用户管理和全局操作日志查看
- 新增前端界面,实现完整的用户交互体验
- 配置环境变量示例和Git忽略规则
- 编写详细的README文档,包含安装和使用说明
2026-01-11 15:56:55 +08:00

文档在线管理系统

一个基于FastAPI的文档在线管理系统后端API提供用户管理、文档管理和操作日志记录功能。

功能特性

用户管理模块

  • 用户注册/删除
  • 用户登录/登出
  • 用户信息维护
  • 用户操作记录
  • 会话管理机制

文档管理模块

  • 文档创建、查看、更新、删除
  • 文档权限控制(私有/公开)
  • 文档类型和大小管理

操作日志模块

  • 完整的用户操作记录
  • 管理员可查看所有操作日志
  • 用户可查看自己的操作日志

技术栈

  • 后端框架: FastAPI
  • 数据库: SQLite (支持其他数据库)
  • 认证: JWT Token
  • ORM: SQLAlchemy

安装和运行

1. 安装依赖

pip install -r requirements.txt

2. 配置环境变量

复制环境变量示例文件:

cp .env.example .env

编辑 .env 文件,设置你的配置:

SECRET_KEY=your-super-secret-jwt-key
DATABASE_URL=sqlite:///./document_management.db
DEBUG=true
HOST=0.0.0.0
PORT=8000

3. 运行应用

# 方式1: 使用uvicorn直接运行
uvicorn main:app --reload --host 0.0.0.0 --port 8000

# 方式2: 使用python运行
python main.py

4. 访问API文档

应用启动后可以访问以下地址查看API文档

API接口说明

认证接口

用户注册

POST /auth/register
Content-Type: application/json

{
  "username": "testuser",
  "email": "test@example.com",
  "password": "password123",
  "full_name": "测试用户"
}

用户登录

POST /auth/login
Content-Type: application/json

{
  "username": "testuser",
  "password": "password123"
}

用户登出

POST /auth/logout
Authorization: Bearer <token>

用户管理接口

获取当前用户信息

GET /users/me
Authorization: Bearer <token>

更新用户信息

PUT /users/me
Authorization: Bearer <token>
Content-Type: application/json

{
  "email": "newemail@example.com",
  "full_name": "新姓名"
}

获取所有用户(仅管理员)

GET /users?skip=0&limit=100
Authorization: Bearer <token>

删除用户(仅管理员)

DELETE /users/{user_id}
Authorization: Bearer <token>

文档管理接口

创建文档

POST /documents
Authorization: Bearer <token>
Content-Type: application/json

{
  "title": "我的文档",
  "content": "文档内容",
  "description": "文档描述",
  "file_type": "txt",
  "is_public": false
}

获取文档列表

GET /documents?skip=0&limit=100
Authorization: Bearer <token>

获取文档详情

GET /documents/{document_id}
Authorization: Bearer <token>

更新文档

PUT /documents/{document_id}
Authorization: Bearer <token>
Content-Type: application/json

{
  "title": "更新后的标题",
  "content": "更新后的内容"
}

删除文档

DELETE /documents/{document_id}
Authorization: Bearer <token>

操作日志接口

获取我的操作日志

GET /logs/my?skip=0&limit=100
Authorization: Bearer <token>

获取所有操作日志(仅管理员)

GET /logs?skip=0&limit=100
Authorization: Bearer <token>

数据库结构

Users表用户表

  • id: 主键
  • username: 用户名(唯一)
  • email: 邮箱(唯一)
  • hashed_password: 加密密码
  • full_name: 全名
  • is_admin: 是否管理员
  • is_active: 是否激活
  • created_at: 创建时间
  • updated_at: 更新时间

Documents表文档表

  • id: 主键
  • title: 文档标题
  • content: 文档内容
  • description: 文档描述
  • file_type: 文件类型
  • file_size: 文件大小
  • is_public: 是否公开
  • owner_id: 所有者ID外键
  • created_at: 创建时间
  • updated_at: 更新时间

UserOperationLogs表用户操作日志表

  • id: 主键
  • user_id: 用户ID外键
  • operation: 操作类型
  • details: 操作详情
  • ip_address: IP地址
  • user_agent: 用户代理
  • created_at: 创建时间

安全特性

  1. JWT认证: 基于Token的认证机制
  2. 权限控制: 用户只能访问自己的数据
  3. 输入验证: 使用Pydantic进行数据验证
  4. CORS支持: 支持跨域请求

⚠️ 重要安全说明

简化认证模式: 当前系统使用简化认证模式,密码以明文形式存储。

  • 仅适用于开发环境: 此模式仅用于开发和测试目的
  • 生产环境警告: 在生产环境中强烈建议使用bcrypt等安全加密算法
  • 安全升级: 如需升级到生产环境,请参考扩展功能建议中的安全升级部分

部署说明

本地部署

# 1. 克隆项目
git clone <repository-url>
cd web_security

# 2. 创建虚拟环境
python -m venv .venv

# 3. 激活虚拟环境
# Windows:
.venv\\Scripts\\activate
# Linux/Mac:
source .venv/bin/activate

# 4. 安装依赖
pip install -r requirements.txt

# 5. 运行应用
uvicorn main:app --reload --host 0.0.0.0 --port 8000

生产环境部署

  1. 修改 .env 文件中的配置:

    • 设置强密钥
    • 关闭DEBUG模式
    • 使用生产数据库
  2. 使用生产级服务器如uvicorn with gunicorn

  3. 配置反向代理如Nginx

开发说明

项目结构

web_security/
├── main.py              # 主应用文件
├── database.py          # 数据库配置
├── models.py            # 数据模型
├── schemas.py           # Pydantic模式
├── auth.py              # 认证模块
├── requirements.txt     # 依赖列表
├── .env.example         # 环境变量示例
└── README.md           # 项目说明

扩展功能建议

  1. 文件上传: 支持文档文件上传
  2. 文档分享: 文档分享和协作功能
  3. 版本控制: 文档版本管理
  4. 搜索功能: 文档内容搜索
  5. 权限分级: 更细粒度的权限控制
  6. 安全升级: 升级到生产级安全认证
    • 安装bcrypt: pip install bcrypt passlib[bcrypt]
    • 更新auth.py中的密码处理函数
    • 重新创建数据库以加密现有密码

许可证

MIT License

Description
No description provided
Readme 43 KiB
Languages
JavaScript 34.2%
Python 33%
HTML 17.3%
CSS 15.5%