创建jwt令牌
import jwt
import datetime
from django.conf import settings
def create_tokens(user_id):
account_token_payload = {
'user_id': user_id,
'exp': datetime.datetime.now() + datetime.timedelta(days=365) # 账户令牌过期时间
}
refresh_token_payload = {
'user_id': user_id,
'exp': datetime.datetime.now() + datetime.timedelta(days=365), # 刷新令牌过期时间
'type': 'refresh' # 指定类型为刷新令牌
}
account_token = jwt.encode(account_token_payload, settings.SECRET_KEY, algorithm='HS256')
refresh_token = jwt.encode(refresh_token_payload, settings.SECRET_KEY, algorithm='HS256')
return account_token, refresh_token
验证jwt令牌
from common.exception import SvcUnError
from django.conf import settings
import jwt
def check_account_token(account_token: str):
try:
return jwt.decode(account_token, settings.SECRET_KEY, algorithms=['HS256'])
except jwt.ExpiredSignatureError:
raise SvcUnError(msg='Account token has expired',code=401)
except jwt.InvalidTokenError:
raise SvcUnError(msg='Invalid account token', code=401)