PagerMaid-Pyro/pagermaid/web/api/utils.py
xtaodada 5a49bec540
🔖 Update to v1.2.31
support empty secret key
2023-02-01 00:46:26 +08:00

29 lines
848 B
Python

import datetime
from typing import Optional
from fastapi import Header, HTTPException, Depends
from jose import jwt
from pagermaid.config import Config
ALGORITHM = 'HS256'
TOKEN_EXPIRE_MINUTES = 30
def authentication():
def inner(token: Optional[str] = Header(...)):
if Config.WEB_SECRET_KEY:
try:
jwt.decode(token, Config.WEB_SECRET_KEY, algorithms=ALGORITHM)
except (jwt.JWTError, jwt.ExpiredSignatureError, AttributeError):
raise HTTPException(status_code=400, detail='登录验证失败或已失效,请重新登录')
return Depends(inner)
def create_token():
data = {
"exp": datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(minutes=TOKEN_EXPIRE_MINUTES),
}
return jwt.encode(data, Config.WEB_SECRET_KEY, algorithm=ALGORITHM)