Требуется 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 после входа в систему.