Как отключить повторную аутентификацию в 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 для повторной аутентификации может ослабить вашу защиту, особенно при выполнении конфиденциальных действий. Убедитесь, что отключение повторной аутентификации по-прежнему соответствует требованиям безопасности вашего приложения и что это намеренное решение.

Вернуться на верх