如何解决从Django all-auth和rest-auth
该应用程序正在使用Django后端和ReactJS前端。我使用Django中的标准rest-auth包创建了用户帐户,并从ReactJS前端表单中调用了端点。
注册并登录可以正常工作,但是在进行电子邮件确认时,我无法找到确认密钥的存储位置以及如何访问确认密钥。我从get_email_confirmation_url
覆盖了DefaultAccountAdapter
,将要从[后端] / rest-auth / registration / account-confirm-email / [KEY]发送出去的URL确认链接更改为[frontend] / registration / confirm-email / [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
仅包含一个布尔值,说明是否已验证电子邮件帐户,但没有确认密钥。
解决方法
密钥不再存储 https://stackoverflow.com/a/41364419/3241374
我使用网址确认:
- 我抓住前端的钥匙
- 将其发布到后端确认网址
- 检查响应/登录用户
好的起点是这个答案: https://stackoverflow.com/a/59327408/3241374
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。