fastapi是一个异步编程框架,有非常不错的性能,本文介绍如何在 fastapi中实现jwt验证功能
1. 添加依赖
pipenv install pyjwt 'passlib[bcrypt]'
2. 编写一个handle处理jwt所需功能 app/auth.py
import jwt
from fastapi import HTTPException, Security
from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer
from passlib.context import CryptContext
from datetime import datetime, timedelta
class AuthHandler():
security = HTTPBearer()
pwd_context = CryptContext(schemes=['bcrypt'], deprecated='auto')
secret = 'SECRET'
# 密码加密
def get_password_hash(self, password):
return self.pwd_context.hash(password)
# 密码校验
def verify_password(self, plain_password, hashed_password):
return self.pwd_context.verify(plain_password, hashed_password)
# token生成
def encode_token(self, user_id):
payload = {
'exp': datetime.utcnow()+timedelta(days=0, minutes=120),
'iat': datetime.utcnow(),
'sub': user_id

本文介绍了如何在FastAPI应用中集成JWT验证。首先,通过pipenv安装必要的依赖库,如pyjwt和passlib。接着,定义了一个AuthHandler类,包含密码加密、校验、token生成和解码的方法。在用户注册和登录接口中,实现了密码的加密存储和基于JWT的token生成。最后,通过使用Depends装饰器和auth_wrapper方法,实现了受保护的路由,确保只有持有有效token的用户才能访问。
最低0.47元/天 解锁文章
827

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



