A class that implements a URL-safe timed serializer.
Initialize the serializer with a secret key and an optional expiration time.
PARAMETER | DESCRIPTION |
secret_key | TYPE: str |
expired_in | TYPE: int DEFAULT: 0 |
Source code in authx/_internal/_signature.py
| def __init__(self, secret_key: str, expired_in: int = 0) -> None:
"""
Initialize the serializer with a secret key and an optional expiration time.
"""
self.ser = URLSafeTimedSerializer(secret_key)
self.expired_in = expired_in
|
ser instance-attribute
ser = URLSafeTimedSerializer(secret_key)
expired_in instance-attribute
encode
PARAMETER | DESCRIPTION |
dict_obj | TYPE: Dict[str, Any] |
Source code in authx/_internal/_signature.py
| def encode(self, dict_obj: Dict[str, Any]) -> str:
return self.ser.dumps(dict_obj)
|
decode
PARAMETER | DESCRIPTION |
token | TYPE: str |
Source code in authx/_internal/_signature.py
| def decode(self, token: str) -> Tuple[Optional[Dict[str, Any]], Optional[str]]:
if token is None:
return None, "NoTokenSpecified"
try:
if self.expired_in == 0:
decoded_obj = self.ser.loads(token)
else:
decoded_obj = self.ser.loads(token, max_age=self.expired_in)
except SignatureExpired:
return None, "SignatureExpired"
except BadTimeSignature:
return None, "InvalidSignature"
except Exception:
return None, "BadSignature" # Catch-all for other signature errors
return decoded_obj, None
|