В одном моём проекте на 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.

В одном моём проекте на FastAPI используется подтверждение регистрации по электронной почте. Для создания ссылки подтверждения регистрации требуется создание токена | Сетка — новая социальная сеть от hh.ru
repost

51

input message

напишите коммент

еще контент в этом сообществе

еще контент в этом соообществе

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь