fastapi 构建一个登陆界面,录入账号,密码,点击提交返回服务器账号,密码,服务器检查账号密码是否正确后,转入登陆后的工作界面,
时间: 2024-09-09 19:02:50 浏览: 70
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,使用 Python 3.6+ 类型提示。下面是一个简单的 FastAPI 示例,用于构建一个登录界面,实现账号密码的录入和验证,并返回结果给客户端。
首先,需要安装 FastAPI 和其支持的 ASGI 服务器 Uvicorn:
```bash
pip install fastapi uvicorn
```
然后,创建一个 Python 文件,比如 `main.py`,并写入以下代码:
```python
from fastapi import FastAPI, HTTPException
from fastapi.security import HTTPBasic, HTTPBasicCredentials
from typing import Dict
app = FastAPI()
# 假设我们有一个简单的用户数据库
# 在实际应用中,应该使用数据库来存储用户信息,并且密码应该是加密存储的
users_db = {
"user1": "password1",
"user2": "password2"
}
security = HTTPBasic()
@app.post("/login/")
async def login(credentials: HTTPBasicCredentials = Depends(security)):
# 检查账号密码是否在我们的数据库中
user = users_db.get(credentials.username)
if user and user == credentials.password:
# 登录成功,返回账号密码信息
return {"username": credentials.username, "password": credentials.password}
else:
# 登录失败,抛出 HTTPException
raise HTTPException(status_code=401, detail="Incorrect username or password")
# 登录后的主界面
@app.get("/dashboard/")
async def dashboard():
return {"message": "登录成功!欢迎进入工作界面。"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
```
运行这个脚本:
```bash
uvicorn main:app --reload
```
`--reload` 参数会在代码更改后重新启动服务器,适用于开发环境。
你可以使用 curl 或 Postman 向 `/login/` 端点发送一个 POST 请求,包含 `Authorization` 头部,格式为 `Basic base64(username:password)`。
示例的 curl 命令如下:
```bash
curl -X POST -H "Content-Type: application/json" -d '{"username":"user1","password":"password1"}' http://127.0.0.1:8000/login/
```
如果账号密码正确,你将收到如下响应:
```json
{"username": "user1", "password": "password1"}
```
否则,服务器会返回一个 401 错误。
登录成功后,你可以访问 `/dashboard/` 来查看工作界面。
阅读全文