JWT
约 503 字大约 2 分钟
我们编写了 JWT 授权中间件,使其可以在每次请求发起时,能够实现自动授权,并且还使用 Redis 和 Rust 库对用户信息进行缓存和解析,使其性能影响尽可能降到最低
接口鉴权
在文件 backend/common/security/jwt.py
中,包含以下代码
# JWT authorizes dependency injection
DependsJwtAuth = Depends(HTTPBearer())
我们通过在接口函数中添加此依赖实现 JWT 快速校验,它可以帮助我们检查请求头中是否包含 Bearer Token,使用方式参考如下:
@router.get('/hello', summary='你好', dependencies=[DependsJwtAuth])
async def hello():
...
Token
内置 token 授权方式遵循 rfc6750
如果您想通过自定义请求头添加 token 进行授权,可查看文章: Header Token
Swagger 登录
这是一种快捷的授权方式,仅用于调试目的,在服务启动后,进入 Swagger 文档,可通过此调试接口快速获取 token(无需验证码)
验证码登录
你可以通过此方式获取 token,在大多数情况下,这更适用于配合前端实现登录授权
我们在 fba 中使用 fast_captcha 生成 base64 验证码,然后通过接口进行数据返回;您可以通过在线 base64 转图片或配合前端项目将其转为图片进行预览,以下使其工作流程: