Django Rest Auth自定义重置密码确认url

5lwkijsr  于 2023-04-13  发布在  Go
关注(0)|答案(2)|浏览(104)

使用django-rest-framework,当你发布重置密码(rest-auth/password/reset/)时,会有一封电子邮件发送到用户邮箱。这封电子邮件包含一个确认URL。我想更改这个URL,因为我正在使用REST应用程序,我希望这封电子邮件指向我的前端而不是django后端。
在确认邮件的情况下,我不得不从AccountAdapter中覆盖get_email_confirmation_url方法。但是在重置密码的情况下,我不知道如何做(适配器中没有关于重置密码的方法)。
你知道吗?

xxb16uws

xxb16uws1#

我用templatetags做的:https://docs.djangoproject.com/fr/1.10/howto/custom-template-tags/
我的模板标签文件(例如settings_vars.py):

from django import template
from django.conf import settings

register = template.Library()

@register.simple_tag
def get_settings_var(name):
    return getattr(settings, name)

我的settings.py中的变量:

FRONTEND_URL = 'http://localhost:4200/'
ACCOUNT_EMAIL_CONFIRMATION_URL = FRONTEND_URL + 'verify-email/{}'
ACCOUNT_PASSWORD_RESET_CONFIRM = FRONTEND_URL + 'password-reset/confirm/'

在我的password_reset_email.html中的用法:

{% load settings_vars %}

{% trans "Please go to the following page and choose a new password:" %}
{% block reset_link %}
{% get_settings_var 'ACCOUNT_PASSWORD_RESET_CONFIRM' %}?uidb64={{ uid }}&token={{ token }}
{% endblock %}

如果有人知道更好的解决方案,请随时发表评论。
希望能帮到人。

qhhrdooz

qhhrdooz2#

我发现如果你使用的是dj-rest-auth,并且你希望你的重置密码链接指向前端,你可以使用下面的设置
在设置文件中。

REST_AUTH = {
    'PASSWORD_RESET_USE_SITES_DOMAIN': True,
}

基于https://dj-rest-auth.readthedocs.io/en/latest/configuration.html

相关问题