flask-itsdangerous-token.py
from itsdangerous import URLSafeTimedSerializer, BadSignature, SignatureExpired
serializer = URLSafeTimedSerializer(app.config["SECRET_KEY"], salt="email-verify")
def make_token(user_id: int) -> str:
return serializer.dumps({"uid": user_id})
def read_token(token: str, max_age=3600):
try:
return serializer.loads(token, max_age=max_age)["uid"]
except SignatureExpired:
return None # ask the user for a new link
except BadSignature:
return None # tampered or wrong salt