Я использую social-app-django (часть python-social-auth) для реализации входа в Facebook для пользователей моего сайта Django.У меня есть требование, что пользователи должны быть найдены в локальной базе данных пользователей, прежде чем они смогут войти в систему с Facebook.Я заменил auth_allowed-часть конвейера аутентификации, чтобы выполнить эту проверку:
def auth_allowed(backend, details, response, *args, **kwargs):
if not backend.auth_allowed(response, details) or not is_registered_user(response, details):
raise AuthForbidden(backend)
, где is_registered_user()
- это пользовательская функция, которая проверяет, существует ли пользователь локально.
Моя проблемаявляется то, что пользователи не перенаправляются на URL-адрес ошибки входа , если эта проверка завершается неудачно и выдается исключение AuthForbidden
.Вместо этого сайт возвращает 500.
URL-адрес страницы ошибки настроен в файле settings.py следующим образом:
LOGIN_ERROR_URL = "/"
Я использую Django CMS, поэтому я также попытался реализовать промежуточное ПОкоторый перезаписывает SocialAuthExceptionMiddleware
(который должен обрабатывать исключение AuthForbidden
в стандартной настройке) для возврата CMS-страницы вместо URL-адреса из settings.py, но это промежуточное программное обеспечение не вызывается в процессе, насколько я могусм.
Есть идеи как это исправить?Мне не хватает какой-то конфигурации?