FastAPI-用户认证和授权(二)

2023-05-07 21:30:37 浏览数 (3)

JWT令牌认证

JWT令牌认证是一种流行的身份验证方式,它使用JSON Web Tokens (JWTs)来验证用户身份。JWT令牌包含了一些用户信息和签名,服务器可以使用签名来验证令牌是否合法。在FastAPI中,你可以使用fastapi_jwt_auth库来实现JWT令牌认证。下面是一个JWT令牌认证的示例:

代码语言:javascript复制
from fastapi import FastAPI, HTTPException, Depends
from fastapi_jwt_auth import AuthJWT
from pydantic import BaseModel

app = FastAPI()

class User(BaseModel):
    username: str
    password: str

class UserCreate(User):
    password2: str

@AuthJWT.load_config
def get_config():
    return {
        "secret_key": "mysecret",
        "algorithm": "HS256"
    }

@app.post("/login/")
async def login(user: User):
    if user.username != "admin" or user.password != "admin":
        raise HTTPException(status_code=401, detail="Incorrect username or password")
    access_token = AuthJWT.create_access_token(subject=user.username)
    return {"access_token": access_token}

@app.get("/items/")
async def read_items(AuthJWT: AuthJWT = Depends()):
    AuthJWT.jwt_required()
    username = AuthJWT.get_jwt_subject()
    return {"username": username}

在上面的代码中,我们定义了一个名为read_items的路由函数,它需要使用AuthJWT依赖项进行JWT令牌认证。在read_items函数中,我们首先调用jwt_required方法来确保请求中包含有效的JWT令牌。然后,我们使用get_jwt_subject方法获取JWT令牌中的用户名,并返回一个包含用户名的字典。

0 人点赞