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令牌中的用户名,并返回一个包含用户名的字典。