Требуется 2FA (MFA) для личных страниц Wagtail. Я думаю, это работает

Это один из тех случаев, когда я думаю, что у меня есть решение, но я не знаю, делаю ли я что-то проблематичное

У меня есть сайт Wagtail, где я использую 2FA, отправляемый по электронной почте, и у меня есть личные статьи, на которые люди должны войти, чтобы увидеть

До исправления, когда люди входили в админ-панель, все работало так, как ожидалось - они должны были ввести код, который был отправлен им по электронной почте. Но когда люди заходили в систему, чтобы просмотреть личную статью, они могли войти в систему без использования 2FA, а после входа в систему они могли перейти в панель администратора без дальнейших проблем

Я думаю, что исправил это, добавив следующую строку в мои шаблоны URL:

path("_util/login/", RedirectView.as_view(url="/accounts/login/?next=/accounts")),

Это работает, потому что, когда кто-то нажимал на статью, он перенаправлялся на _util/login, поэтому исправление состояло в повторном перенаправлении этого URL на все учетные записи allauth точно так же, как перенаправляется admin/login

Эта строка следует за аналогичным перенаправлением для admin/login, поэтому мои URL-адреса выглядят следующим образом:

urlpatterns = [
    path("django-admin/", admin.site.urls),
    path("admin/login/", RedirectView.as_view(url="/accounts/login/?next=admin")),
    path("_util/login/", RedirectView.as_view(url="/accounts/login/?next=/accounts")),
    path("admin/", include(wagtailadmin_urls)),
    path("accounts/", include("allauth.urls")),
    path("documents/", include(wagtaildocs_urls)),
    path("search/", search_views.search, name="search"),
]

Но есть две вещи, о которых я спрашиваю. Во-первых, я не знаю, как перенаправить посетителя обратно на статью, которую он пытался просмотреть

Во-вторых, я не знаю, есть ли в этом что-то неправильное, на что следует обратить внимание.

Спасибо всем, кто готов оставить полезный комментарий

Вместо добавления перенаправления на _util/login/ вы можете установить параметр WAGTAIL_FRONTEND_LOGIN_URL на URL-адрес по вашему выбору - в данном случае это будет

WAGTAIL_FRONTEND_LOGIN_URL = "/accounts/login/"

Это позволит передать URL, с которого они пришли, с помощью параметра URL next, что даст вам возможность перенаправить обратно на этот URL после входа в систему.

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