fastapi jwt的使用方法
时间: 2023-09-09 15:12:39 浏览: 172
fastapi-jwt:通过使用JSON Web令牌(JWT)启用身份验证来保护FastAPI应用程序
使用FastAPI-jwt库来实现JWT身份验证,可以按照以下步骤:
1.安装FastAPI-jwt库:
```shell
pip install fastapi-jwt-auth
```
2.在FastAPI应用中引入FastAPI-jwt库:
```python
from fastapi_jwt_auth import AuthJWT
```
3.在FastAPI应用中配置JWT相关参数,例如:
```python
app = FastAPI()
# JWT相关配置
app.config['SECRET_KEY'] = 'your-secret-key'
app.config['JWT_ALGORITHM'] = 'HS256'
app.config['ACCESS_TOKEN_EXPIRE_MINUTES'] = 30
```
其中,SECRET_KEY是用于签名的密钥,JWT_ALGORITHM是加密算法,ACCESS_TOKEN_EXPIRE_MINUTES是令牌过期时间(以分钟为单位)。
4.定义登录路由,使用AuthJWT来生成JWT令牌并返回给客户端:
```python
@app.post('/login')
def login(request: Request, auth: AuthJWT = Depends()):
# 验证用户名和密码
username = request.form['username']
password = request.form['password']
if username != 'admin' or password != 'admin':
raise HTTPException(status_code=400, detail='用户名或密码错误')
# 生成JWT令牌
access_token = auth.create_access_token(subject=username)
return {'access_token': access_token}
```
在这个例子中,使用AuthJWT的create_access_token方法生成JWT令牌,并将用户名作为主题(subject)写入令牌中。
5.定义需要身份验证的路由,使用AuthJWT来验证JWT令牌:
```python
@app.get('/protected')
def protected(auth: AuthJWT = Depends()):
# 验证JWT令牌
auth.jwt_required()
# 获取JWT令牌中的主题
username = auth.get_jwt_subject()
return {'message': f'Hello, {username}!'}
```
在这个例子中,使用AuthJWT的jwt_required方法来验证JWT令牌是否存在,并使用get_jwt_subject方法获取JWT令牌中的主题。
以上就是使用FastAPI-jwt库进行JWT身份验证的基本方法。需要注意的是,FastAPI-jwt库还提供了其他功能,例如刷新令牌、撤销令牌等,可以根据具体需求进行使用。
阅读全文