django-stronghold не использует следующий параметр для перенаправления

Я не уверен, проблема ли это в django-stronghold или в самом django.

Что происходит:

Что я хочу:

  • При входе в систему я хочу, чтобы меня перенаправляли на исходный URL-адрес, правильно сохраненный в следующем параметре (в примере: http://www.myapp.com/careers)

Моя установка:

Я использую Джанго 1.6.

Как было предложено в документах, я установил django-stronghold через pip и активировал его в своем проекте. вот так:

INSTALLED_APPS = (
    ...
    'stronghold',  # last entry
)

MIDDLEWARE_CLASSES = [
    ...
    'stronghold.middleware.LoginRequiredMiddleware',  # last entry
]

Сначала я столкнулся с циклом перенаправления, поэтому я определил STRONGHOLD_PUBLIC_URLS:

STRONGHOLD_PUBLIC_URLS = (
    r'^/admin.*?$',  # Don't touch the admin pages
    r'^/accounts/login/$',  # Avoid redirect loop
)

Что я пробовал:

  • Явная установка LOGIN_URL и LOGIN_REDIRECT_URL, как предлагается здесь, не помогла.
  • В контексте входа в интерфейс администратора механизм входа в систему django работает нормально, как это задокументировано здесь:

Вот что делает django.contrib.auth.views.login:

  • При вызове через GET он отображает форму входа, которая отправляет POST на тот же URL-адрес. [...]
  • При вызове через POST с предоставленными пользователем учетными данными он пытается войти в систему пользователя. Если вход выполнен успешно, представление перенаправляется на URL-адрес, указанный в далее. [...]
  • Если я вызову URL-адрес администратора, отличный от .../admin (например, http://www.myapp.com/admin/myapp_base/event/), отображаемый URL-адрес остается прежним, пока отображается форма входа (параметр next отсутствует). После авторизации вижу запрашиваемую страницу.

Идеи?

Есть идеи, почему перенаправление не работает для внешних URL-адресов?


person steps    schedule 09.04.2015    source источник