首页
/ FastAPI-Login 项目教程

FastAPI-Login 项目教程

2026-01-18 09:56:04作者:宣利权Counsellor

1. 项目的目录结构及介绍

FastAPI-Login 项目的目录结构如下:

fastapi_login/
├── fastapi_login/
│   ├── __init__.py
│   ├── login.py
│   └── utils.py
├── tests/
│   ├── __init__.py
│   └── test_login.py
├── .gitignore
├── LICENSE
├── README.md
├── requirements.txt
└── setup.py

目录结构介绍

  • fastapi_login/: 项目的主目录,包含了项目的核心代码。
    • __init__.py: 初始化文件,使得 fastapi_login 成为一个 Python 包。
    • login.py: 包含了登录管理的主要逻辑。
    • utils.py: 包含了项目中使用的工具函数。
  • tests/: 包含了项目的测试代码。
    • __init__.py: 初始化文件,使得 tests 成为一个 Python 包。
    • test_login.py: 包含了登录功能的测试用例。
  • .gitignore: Git 忽略文件,指定了不需要版本控制的文件和目录。
  • LICENSE: 项目的开源许可证。
  • README.md: 项目的说明文档。
  • requirements.txt: 项目依赖的 Python 包列表。
  • setup.py: 项目的安装脚本。

2. 项目的启动文件介绍

FastAPI-Login 项目的启动文件是 fastapi_login/login.py。这个文件包含了登录管理的主要逻辑,包括 LoginManager 类的定义和相关方法。

启动文件内容

from fastapi import FastAPI, Depends, HTTPException, status
from fastapi.security import OAuth2PasswordRequestForm
from fastapi_login import LoginManager
from fastapi_login.utils import create_access_token, set_cookie

app = FastAPI()
SECRET = "super-secret-key"
manager = LoginManager(SECRET, token_url="/login")

fake_db = {
    "johndoe@email.com": {
        "password": "secret"
    }
}

@manager.user_loader
def load_user(email: str):
    return fake_db.get(email)

@app.post("/login")
def login(form_data: OAuth2PasswordRequestForm = Depends()):
    email = form_data.username
    password = form_data.password
    user = load_user(email)
    if not user or user["password"] != password:
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail="Invalid credentials"
        )
    access_token = create_access_token(data={"sub": email})
    response = RedirectResponse(url="/", status_code=status.HTTP_302_FOUND)
    set_cookie(response, access_token)
    return response

启动文件介绍

  • LoginManager: 用于处理登录和令牌管理的类。
  • load_user: 用于从数据库中加载用户信息的函数。
  • /login: 登录路由,处理用户登录请求并生成访问令牌。

3. 项目的配置文件介绍

FastAPI-Login 项目的配置文件主要是 fastapi_login/login.py 中的 SECRET 变量。这个变量用于加密和解密令牌。

配置文件内容

SECRET = "super-secret-key"

配置文件介绍

  • SECRET: 用于加密和解密令牌的密钥。在实际应用中,应该将这个密钥存储在环境变量中,而不是直接写在代码中。

通过以上介绍,您可以了解 FastAPI-Login 项目的目录结构、启动文件和配置文件的基本内容和作用。希望这份教程对您有所帮助。

登录后查看全文
热门项目推荐
相关项目推荐