【发布时间】:2019-06-26 02:05:18
【问题描述】:
在用户通过点击确认电子邮件中的链接确认其电子邮件地址后,我正在尝试更改他们被重定向到的位置。
我正在使用带有 allauth、rest-auth 和 rest-framework 的 Django 2.0.10。对于电子邮件验证,我使用的是默认的 allauth 视图。
在我的 settings.py 中,我设置了以下内容:
INSTALLED_APPS = [
'api',
'dynamic_rest',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'rest_framework.authtoken',
'django.contrib.sites',
'allauth.account',
'allauth.socialaccount',
'rest_auth.registration',
'users',
'lists',
'rest_auth',
'allauth', # needs to be at the end so custom templates are found first
]
EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL = '/'
print('EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL')
print(EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL)
urls.py
from allauth.account.views import confirm_email
urlpatterns = [
re_path(r'^rest-auth/registration/account-confirm-email/(?P<key>[-:\w]+)/$', confirm_email,
name='account_confirm_email'),
...
]
我的设置“/”确实打印在控制台中,所以我认为它正在被应用程序拾取。但是,当我点击电子邮件中的链接到页面 (http://localhost:8000/api/v1/rest-auth/registration/account-confirm-email/MTQ:1gpYgM:_KpNYl-nd2iiG0qLIRRdVrmF8SM/) 然后单击“确认”按钮时,我将被重定向到默认页面 /accounts/profile 而不是 EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL 指定的主页。
这个设置似乎也没有任何效果:
ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION = 假
我想禁用它,因为登录不起作用 - 令牌无效。也许 allauth 的登录方式与 rest-auth 不同?我不介意用户在验证他们的电子邮件地址后是否必须登录,但是用户似乎已登录但实际上没有登录的当前行为是不行的。
我做错了什么,在确认用户的电子邮件地址后,如何自定义重定向用户的位置?非常感谢您的帮助!
【问题讨论】:
标签: django django-rest-framework email-validation