在之前的分享的中,产生了token,用于做登录的认证,那么产生了token后,登陆携带了token,我们如何校验呢?
先来梳理下逻辑:
1. 调用登录接口,产生token
2.调用依赖登录的接口,在请求头中携带token
3.依赖登录的接口,接收到请求,判断是否在headers中携带token
4.携带token,校验是否过期
5.解析token,获取username
6.根据username从redis获取
7.查询到username的token且token相等,我们认为用户登录
8.调用接口返回数据
9.如果其中一项校验不通过,返回对应的失败信息
思路梳理完毕,下面我们把逻辑实现
先从headers中获取token并且验证是否在redis中存在这个token
async def get_current_user(request: Request, token: Optional[str] = Header(...)) -> BaseUser:
"""token依赖请求头的token校验"""
# 验证失败返回信息
credentials_exc = HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Authentication Failed",
headers={"WWW-Authenticate": "Bearer"}
)
# 未登录返回信息
not_login_exc = HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail="NOT LOGIN OR TOK

最低0.47元/天 解锁文章
1700

被折叠的 条评论
为什么被折叠?



