# fastapi_jwt_demo **Repository Path**: wisdomfriend/fastapi_jwt_demo ## Basic Information - **Project Name**: fastapi_jwt_demo - **Description**: fastapi_jwt_demo - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-17 - **Last Updated**: 2026-04-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FastAPI JWT 鉴权示例 这是一个面向初学者的 JWT 鉴权 Demo,演示: - 登录签发 Access Token - Bearer Token 访问受保护接口 - 过期/无效 token 返回 401 - 密码哈希校验 ## 1. 安装与启动 ```bash pip install -r requirements.txt uvicorn main:app --reload ``` 启动后访问: - Swagger 文档:`http://127.0.0.1:8000/docs` ## 2. 测试账号 - 用户名:`alice`,密码:`alice123` - 用户名:`bob`,密码:`bob123` ## 3. API 列表 - `POST /api/v1/auth/login`:登录获取 token(表单) - `GET /api/v1/users/me`:获取当前用户信息(需 Bearer Token) - `GET /api/v1/todos`:获取当前用户待办(需 Bearer Token) - `POST /api/v1/todos`:创建当前用户待办(需 Bearer Token) ## 4. curl 快速测试 ### 4.1 登录拿 token ```bash curl -X POST http://127.0.0.1:8000/api/v1/auth/login \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "username=alice&password=alice123" ``` 返回示例: ```json { "access_token": "eyJhbGciOiJIUzI1NiIs...", "token_type": "bearer" } ``` ### 4.2 访问受保护接口 把 `` 替换为上一步拿到的 token: ```bash curl http://127.0.0.1:8000/api/v1/users/me \ -H "Authorization: Bearer " ``` ### 4.3 创建待办 ```bash curl -X POST http://127.0.0.1:8000/api/v1/todos \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d "{\"title\":\"学习 JWT\"}" ``` ## 5. 生产环境提醒 - 不要把 `SECRET_KEY` 写死在代码里,请放到环境变量 - Access Token 保持短时效 - 全链路必须使用 HTTPS - 需要“退出立即失效”时,引入黑名单或 token 版本号 ## 6. 常见报错排查 如果你遇到 `passlib + bcrypt` 兼容报错(例如 `error reading bcrypt version`),执行以下步骤: ```bash pip uninstall -y bcrypt pip install -r requirements.txt --upgrade ``` 当前示例已改为 `pbkdf2_sha256`,不再依赖 `bcrypt` 后端。