Как отключить повторную аутентификацию в TOTP MFA в Django's allauth
Я пытаюсь настроить форму повторной аутентификации в mfa. Я также настроил форму активации и деактивации TOTP, и она работает, но теперь я пытаюсь настроить форму повторной аутентификации с определенным именем маршрута в django.
и есть ли способ отключить этот reauth от allauth mfa - 2fa
settings/urls.py
path('mfa/reauthenticate/', views.CustomReauthenticateView.as_view(), name='mfa_reauthenticate'),
settings/views.py
class CustomReauthenticateView(BaseReauthenticateView):
template_name = "settings/mfa/reauthenticate.html" # Ensure the correct template is used
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['custom_message'] = 'This is a custom message for reauthentication.'
return context
def form_valid(self, form):
response = super().form_valid(form)
return response
но он всегда переводит на localhost:8000/accounts/reauthenticate/?next=...
, а не на определенный мной url. Я также попробовал другой способ, настроив allauth.account.decoders - reauthentication_required, но не работает
Пожалуйста, кто-нибудь помогите, что я хочу перенаправить на мою пользовательскую форму reauth
Чтобы отключить повторную аутентификацию в MFA Django Allauth с TOTP (Time-based One-Time Password), вам обычно нужно изменить настройки или настроить способ, которым Django Allauth обрабатывает повторную аутентификацию.
Однако помните, что цель MFA - повысить безопасность, и ее отключение может снизить безопасность вашего приложения. Повторная аутентификация обычно требуется для того, чтобы пользователи, которые уже вошли в систему, оставались в безопасности в течение долгого времени, особенно при выполнении конфиденциальных действий.
Если вы все еще хотите продолжить, вот как вы можете изменить или настроить поведение:
Шаги для отключения повторной аутентификации: Измените настройки allauth: Django Allauth использует параметр ACCOUNT_AUTHENTICATED_KEEP_ALIVE для определения необходимости повторной аутентификации пользователя. Вы можете установить значение True, чтобы отключить повторную аутентификацию для пользователей, которые уже прошли аутентификацию.
Добавьте это в файл settings.py:
ACCOUNT_AUTHENTICATED_KEEP_ALIVE = True
Этот параметр гарантирует, что аутентифицированные пользователи останутся в системе, не требуя повторной аутентификации через определенный период.
Проверьте и настройте параметры TOTP: Функция TOTP (Time-based One-Time Password) в Django Allauth часто контролируется пакетом django-otp. Вы можете настроить ее поведение, переопределив определенные представления или сигналы.
Определите представления Allauth (необязательно): Если вам нужно полностью настроить работу повторной аутентификации с TOTP, вы можете переопределить представления Allauth, связанные с MFA или повторной аутентификацией. Вот пример того, как переопределить представление проверки TOTP:
from allauth.account.views import LoginView from django.shortcuts import redirect
class CustomLoginView(LoginView):
def form_valid(self, form):
# Custom logic for skipping re-authentication
return redirect('your_redirect_url') # Direct to your desired page
Настройте django-otp (необязательно): Если вы используете django-otp, вам может понадобиться настроить работу TOTP. Пакет django-otp позволяет работать с паролями, основанными на времени, но может потребоваться настройка промежуточного ПО или представлений, чтобы отключить второй фактор для повторной аутентификации.
Настройте параметры истечения срока действия сессии: Вы также можете управлять поведением истечения срока действия сессии, регулируя SESSION_COOKIE_AGE и SESSION_EXPIRE_AT_BROWSER_CLOSE в настройках Django. Например:
Продлить время истечения сессии
SESSION_COOKIE_AGE = 60 * 60 * 24 * 7 # 1 week
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
Важные замечания: Отключение MFA для повторной аутентификации может ослабить вашу защиту, особенно при выполнении конфиденциальных действий. Убедитесь, что отключение повторной аутентификации по-прежнему соответствует требованиям безопасности вашего приложения и что это намеренное решение.