# Geeker-Admin-JS-Fastapi **Repository Path**: ge-yaliang/geeker-admin-js-fastapi ## Basic Information - **Project Name**: Geeker-Admin-JS-Fastapi - **Description**: 项目名称:Geeker-Admin 后端管理系统。 项目描述:这是一个基于 FastAPI 的后端管理系统,旨在为前端提供强大的 API 支持。系统包括用户管理、权限管理、数据导出等功能,并且支持 JWT 认证和跨域请求(CORS)。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2025-02-16 - **Last Updated**: 2025-05-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Geeker-Admin-JS-Fastapi ## 介绍 项目名称:Geeker-Admin Fastapi后端管理系统。 项目描述: 这是一个基于 FastAPI 的后端管理系统,旨在为 Geeker-Admin-JS 提供 API 支持。 系统包括用户管理、数据导出等功能,并且支持 JWT 认证和跨域请求(CORS)。 ## 软件架构 ### 概述 - Geeker-Admin 后端管理系统采用分层架构设计,主要包括以下几个层次: - 表现层(Presentation Layer): - FastAPI:作为主要的 Web 框架,处理 HTTP 请求和响应。 - FastAPI-Static-Files:用于处理静态文件,如 CSS、JavaScript 和图片等。 - 业务逻辑层(Business Logic Layer): - 路由(Routers):定义 API 端点,处理业务逻辑。 - 依赖注入(Dependencies):管理数据库会话、认证等依赖项。 - 中间件(Middleware):处理跨域请求(CORS)、日志记录等。 - 数据访问层(Data Access Layer): - SQLModel:用于定义数据库模型和与数据库交互。 - SQLAlchemy:作为 ORM 工具,管理数据库连接和操作。 - PyMySQL:用于连接 MySQL 数据库。 - 安全层(Security Layer): - JWT 认证:使用 PyJWT 处理 JWT 令牌,确保用户认证和授权。 - 密码哈希:使用 Passlib 和 bcrypt 算法进行密码哈希和验证。 - 工具层(Utility Layer): - 配置管理:使用 python-dotenv 加载环境变量。 - 响应工具:使用 response_utils.py 创建标准化的响应字典。 - 验证工具:使用 validate_utils.py 进行数据验证。 - 文本工具:使用 txt_utils.py 读取配置文件。 ## 安装教程 ### 1.环境要求 - Python 版本 3.12 ### 2.安装依赖 ```bash pip install fastapi uvicorn pip install python-multipart pyjwt sqlmodel pymysql passlib==1.7.4 bcrypt==4.0.1 python-dotenv fastapi-static-files pandas openpyxl pydantic-settings ``` ### 3.配置环境变量 - 需要改 `config.env` 里面的 `SECRET_KEY`,让 AI 帮你算一个 HS256 的密钥覆盖里面就行了。 - `EXPIRE` 是 token 有效期。 - `ALGORITHM` 是密钥算法。 ## 使用说明 ### 1.启动后端 - **方式一:在 PyCharm 中直接运行 `main.py`** ```python # 在这个 if 左侧有个绿色的播放箭头,点一下就运行了 if name == "main": import uvicorn uvicorn.run("main:app", host="0.0.0.0", port=6061, reload=True) ``` - **方式二:使用命令行启动** ```bash uvicorn main:app --host 0.0.0.0 --port 6061 --reload ``` - **测试接口** - 启动后进入这个网址测试 [http://127.0.0.1:6061/docs](http://127.0.0.1:6061/docs) ### 2.匹配前端 - **配套前端** - [前端:海马傻了/Geeker-Admin-JS](https://gitee.com/haimashale/geeker-admin-js) - **前端代码修改** ```javascript // src/api/modules/login.js export const getAuthMenuListApi = () => { return authMenuList; }; export const getAuthButtonListApi = () => { return authButtonList; }; // src/views/login/components/LoginForm.vue const { data } = await loginApi({ ...loginForm, password: md5(loginForm.password) }); // 去掉MD5加密,因为后端本身已经进行了加密。如果保留MD5,后端使用bcrypt和MD5结合时会导致错误。 const { data } = await loginApi({ ...loginForm, password: loginForm.password }); ``` - **账号管理界面** 文件位置:src/views/system/accountManage/index.vue 直接粘贴以下代码 ```vue ``` ## 依赖解释 ```text python-multipart: 用于处理表单数据和文件上传。 示例用途:处理 Form 和 File 类型的数据。 pyjwt[crypto]: 用于处理 JWT 令牌,包括加密支持。 [crypto] 选项确保安装加密支持,这对于生成和验证带有加密签名的 JWT 令牌是必要的。 示例用途:生成和验证 JWT 令牌。 sqlmodel: 用于定义数据库模型和与数据库交互。 示例用途:定义 SQL 模型和创建数据库表。 pymysql: 用于连接 MySQL 数据库。 示例用途:创建 SQLAlchemy 引擎并连接到 MySQL 数据库。 passlib[bcrypt]: 用于密码哈希和验证,特别是使用 bcrypt 算法。 [bcrypt] 选项确保安装 bcrypt 支持。 示例用途:哈希和验证用户密码。 python-dotenv: 用于加载环境变量 - .env文件。 fastapi-static-files: 用于处理静态文件,如 CSS、JavaScript 和图片等。 pandas: 用于处理数据,如读取和写入 Excel 文件。(适用于小文件,不支持断点续传) openpyxl: 用于处理 Excel 文件。 pydantic-settings: 用于处理配置文件,如读取和写入配置文件。 ```