Как я могу обновить адрес электронной почты, используя код подтверждения в Django?

#python #django #django-rest-framework #django-allauth #django-rest-auth

#python #django #django-rest-framework #django-allauth #django-rest-auth

Вопрос:

Я использую все функциональные возможности dj-rest-auth для регистрации, входа в систему, подтверждения адреса электронной почты, смены пароля, сброса пароля и многого другого. К сожалению, библиотека не поддерживает изменение адреса электронной почты. Я бы хотел, чтобы аутентифицированный пользователь сначала ввел пароль учетной записи и новый адрес электронной почты. После успешного процесса аутентификации я хотел бы отправить пользователю специально сгенерированный код подтверждения. Только когда он введет его, старый адрес электронной почты будет изменен на новый. Насколько я знаю, такой функциональности в dj-rest-auth . К сожалению, я также нигде не нашел никаких текущих решений или библиотек для этой цели. У кого-нибудь была такая проблема, и он мог бы поделиться своим решением здесь? Заранее благодарю вас.

Ответ №1:

Хотя у меня нет никакого решения для того, что вы хотите точно, но вот замена. Вы можете использовать django all-auth и некоторый сервер электронной почты, чтобы отправить электронное письмо на новое добавленное электронное письмо для подтверждения нового электронного письма. В отправленном электронном письме будет ссылка для подтверждения, и пользователь должен нажать на нее, чтобы подтвердить новое электронное письмо. После использования django all-auth вам нужно только добавить сервер электронной почты, который поможет в отправке электронной почты. Rest будет поддерживаться all-auth. например, в ваших настройках.py вы можете добавить сервер электронной почты SMTP для отправки электронной почты из выбранной вами учетной записи gmail. Добавьте эти строки кода в свой settings.py;

 EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_USE_TLS = True
EMAIL_PORT = 587
EMAIL_HOST_USER = DEFAULT_FROM_EMAIL = 'HOST_EMAIL' #HOST_EMAIL is your email from which you want to send email to the user.
EMAIL_HOST_PASSWORD = 'HOST_PASSWORD' #HOST_PASSWORD is the password of the email you are using as HOST_EMAIL
  

Но после выполнения всех этих действий, чтобы заставить его работать локально, вам нужно зайти в свой аккаунт Google, который вы используете как HOST_EMAIL. Перейдите в раздел управление учетной записью Google>> безопасность>> Включить менее безопасные приложения. Тогда вы сможете отправить электронное письмо пользователю.
ПРИМЕЧАНИЕ: Если у вас включена 2-факторная аутентификация для вашего аккаунта Google, то эти шаги не будут работать. Этот тип учетной записи имеет несколько другие настройки.