Код на салфетке
05.08
В одном моём проекте на FastAPI используется подтверждение регистрации по электронной почте. Для создания ссылки подтверждения регистрации требуется создание токена. С этим нам поможет библиотека itsdangerous.
itsdangerous — это библиотека, созданная для обеспечения безопасности данных, передаваемых между системами в открытом виде. Она позволяет создавать криптографически защищённые подписи для данных, чтобы гарантировать их целостность и аутентичность.
Ссылка на репозиторий библиотеки: тык. Установка библиотеки:
pip install itsdangerous
Пример создания токена:
``` token_serializer = URLSafeTimedSerializer(secret_key="!!!Супер_Секретный_Ключ!!!") confirmation_token = token_serializer.dumps("Данные для шифрования, например Email пользователя") print(confirmation_token)
>>> "ItCU0LDQvdC90YvQtSDQtNC70Y8g0YjQuNGE0YDQvtCy0LDQvdC40Y8sINC90LDQv9GA0LjQvNC10YAgRW1haWwg0L_QvtC70YzQt9C-0LLQsNGC0LXQu9GPIg.Zq50tA.njJks3T0A-gecYTcsJ8zh-VMLWs" ```
Создаём экземпляр класса URLSafeTimedSerializer. Данный класс создаёт токен, подходящий для передачи в URL-адресе, т.е. слагифированный и основан он на времени создания. Затем методом .dumps создаём сам токен, передав внутрь данные для шифрования, например, email пользователя.
Пример валидации токена:
``` token = "ItCU0LDQvdC90YvQtSDQtNC70Y8g0YjQuNGE0YDQvtCy0LDQvdC40Y8sINC90LDQv9GA0LjQvNC10YAgRW1haWwg0L_QvtC70YzQt9C-0LLQsNGC0LXQu9GPIg.Zq50tA.njJks3T0A-gecYTcsJ8zh-VMLWs" token_serializer = URLSafeTimedSerializer(secret_key="!!!Супер_Секретный_Ключ!!!") try: data = token_serializer.loads(token, max_age=3600) except BadSignature: print("Токен просрочен или неверный!") print(data)
>>> "Данные для шифрования, например Email пользователя" ```
Обратившись к ранее созданному экземпляру класса или создав новый, передаём полученный токен в метод .loads() для расшифровки. Также у метода есть ключевой аргумент max_age, позволяющий установить срок жизни токена в секундах, например, если с создания токена прошло больше часа (3600 секунд), то сработает исключение BadSignature.
еще контент в этом сообществе
еще контент в этом соообществе
Код на салфетке
05.08
войдите, чтобы увидеть
и подписаться на интересных профи