Djangos Beitragsauthentifizierung + Allauths MFA – 2FA-Setup
Posted: 03 Jan 2025, 15:43
Ich habe mit django-allauth[mfa] eine Funktion namens 2FA zu meinem Django-Projekt hinzugefügt. Ich habe auch den Anmeldevorgang für soziale Konten mit Google eingerichtet.
und dieser Code funktioniert überhaupt nicht. Nach erfolgreicher Anmeldung wurde zur Startseite weitergeleitet. Ich möchte zum 2FA-Formular umleiten, wenn für das Benutzerkonto 2FA aktiviert ist.
Dies ist mein angepasstes 2FA-Authentifizierungsformular. Es funktionierte mit sozialen Konten wie Google und leitete zum 2FA-Formular weiter, wenn das Konto 2FA aktiviert ist.
Dies ist meine angepasste 2FA-Authentifizierungsansichtsdatei
Ich habe viele Möglichkeiten ausprobiert. Wenn „resolver_url('account_login') umgeleitet wird, wurde der Browser zerstört. Wie man es anpasst und welche Änderungen erforderlich sind, um dieses Problem zu beheben. Bitte hilft mir jemand, der das erlebt hat.
Danke!!!
- Das Anmeldeformular stammt von django.contrib.auth
- 2FA-Formular stammt von allauth.mfa
Code: Select all
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)
Code: Select all
path('accounts/2fa/authenticate/', views.Custom2FAAuthenticateView.as_view(), name='account_login'),
Dies ist meine angepasste 2FA-Authentifizierungsansichtsdatei
Code: Select all
# 2FA authentication view for social login
class Custom2FAAuthenticateView(Base2FAAuthenticateView):
template_name = "authentication/mfa/authenticate.html"
Danke!!!