Django's contrib auth + Allauth's MFA - настройка 2FA
Я добавил функцию под названием 2FA в свой проект django, используя django-allauth[mfa]
. Я также настроил процесс входа в социальный аккаунт с помощью google.
- форма входа в систему находится у
django.contrib.auth
- 2FA форма находится в
allauth.mfa
authentication/views.py - мое пользовательское представление django contrib auth
class CustomLoginView(LoginView):
form_class = UserLoginForm
template_name='authentication/login.html'
redirect_authenticated_user=True
mfa_enabled = False
def dispatch(self, request, *args, **kwargs):
if self.redirect_authenticated_user and self.request.user.is_authenticated:
if self.mfa_enabled:
return HttpResponseRedirect(resolve_url('account_login'))
else:
redirect_to = self.get_success_url()
if redirect_to == self.request.path:
raise ValueError(
"Redirection loop for authenticated user detected. Check that "
"your LOGIN_REDIRECT_URL doesn't point to a login page."
)
return HttpResponseRedirect(redirect_to)
return super().dispatch(request, *args, **kwargs)
def form_valid(self, form):
user = form.get_user()
if self.has_mfa(user):
self.mfa_enabled = True
print("2FA enabled")
else:
auth_login(self.request, user)
return super().form_valid(form)
def has_mfa(self, user):
return is_mfa_enabled(user)
и этот код вообще не работает. После успешного входа в систему он перенаправляет на homepage
. Я хочу перенаправить на форму 2FA, если учетная запись пользователя активирована 2fa.
path('accounts/2fa/authenticate/', views.Custom2FAAuthenticateView.as_view(), name='account_login'),
Это моя настроенная форма 2FA auth. Она работает с социальными аккаунтами, такими как google, и перенаправляет на форму 2FA, если аккаунт активирован 2FA.
это мой файл 2FA auth customized view
# 2FA authentication view for social login
class Custom2FAAuthenticateView(Base2FAAuthenticateView):
template_name = "authentication/mfa/authenticate.html"
Я перепробовал много способов. при перенаправлении resolver_url('account_login')
броузера произошел сбой. Как настроить и какие изменения нужно внести, чтобы это исправить. Пожалуйста, кто-нибудь, кто сталкивался с этим, помогите мне.
Спасибо!!!