【问题标题】:Retrieve user e-mailaddress given confirmation key (email verification) from Django all-auth with rest-auth使用 rest-auth 从 Django all-auth 中检索给定确认密钥(电子邮件验证)的用户电子邮件地址
【发布时间】:2020-12-22 20:27:09
【问题描述】:

应用程序正在使用 Django 后端和 ReactJS 前端。我使用 Django 中的标准 rest-auth 包创建了用户帐户,从 ReactJS 前端表单调用端点。

注册和登录工作正常,但在电子邮件确认方面,我无法找到确认密钥的存储位置以及访问方式。我已经从 DefaultAccountAdapter 覆盖 get_email_confirmation_url 以更改从 [backend]/rest-auth/registration/account-confirm-email/[KEY] 发送到 [frontend]/registration/confirm 的 URL 确认链接-电子邮件/[KEY]。

我可以在前端读出 [KEY]。但是,如何检索尝试确认其地址的用户的电子邮件地址和姓名?在标准 Django 模板中,这是可能的(email_confirm.html):

{% extends "account/base.html" %}

{% load i18n %}
{% load account %}

{% block head_title %}{% trans "Confirm E-mail Address" %}{% endblock %}


{% block content %}
<h1>{% trans "Confirm E-mail Address" %}</h1>

{% if confirmation %}

{% user_display confirmation.email_address.user as user_display %}

<p>{% blocktrans with confirmation.email_address.email as email %}Please confirm that <a href="mailto:{{ email }}">{{ email }}</a> is an e-mail address for user {{ user_display }}.{% endblocktrans %}</p>

<form method="post" action="{% url 'account_confirm_email' confirmation.key %}">
{% csrf_token %}
    <button type="submit">{% trans 'Confirm' %}</button>
</form>

{% else %}

{% url 'account_email' as email_url %}

<p>{% blocktrans %}This e-mail confirmation link expired or is invalid. Please <a href="{{ email_url }}">issue a new e-mail confirmation request</a>.{% endblocktrans %}</p>

{% endif %}

{% endblock %}

confirmation.email_address.user 和confirmation.email_address.email 的信息来自哪里? account_emailconfirmation 表是空的,account_emailaddress 只包含一个布尔值,表示电子邮件帐户是否经过验证,但没有确认密钥。

【问题讨论】:

    标签: django reactjs django-allauth user-accounts django-rest-auth


    【解决方案1】:

    不再存储密钥 https://stackoverflow.com/a/41364419/3241374

    我使用url确认:

    1. 我抓住前端的钥匙
    2. 将其发布到后端确认网址
    3. 检查响应/登录用户

    很好的起点是这个答案: https://stackoverflow.com/a/59327408/3241374

    【讨论】:

      猜你喜欢
      • 2017-02-20
      • 2019-08-30
      • 1970-01-01
      • 1970-01-01
      • 2020-02-28
      • 2016-02-06
      • 2020-01-09
      • 1970-01-01
      • 2017-02-01
      相关资源
      最近更新 更多