Этот код настройки / перенаправления файлов cookie Django приводит к циклу перенаправления даже для браузеров с включенными файлами cookie. Кто-нибудь может объяснить, как это исправить?
В urls.py:
url(r'^$', 'library.views.home', name="home"),
url(r'^ldap/(?P<next>[\w-]*)/$', 'library.views.update_session_from_ldap', name="ldap"),
В views.py:
def home(request):
print 'home'
current_user = request.COOKIES.get('ldap_user', None)
print current_user
if not current_user:
return redirect('/ldap', next='/')
print 'now here'
# url = '/ldap'
def update_session_from_ldap(request, next):
remote_user = request.META.get('REMOTE_USER', None)
hrr = HttpResponseRedirect(next)
hrr.set_cookie('ldap_user', remote_user)
print 'set cookie!'
return hrr
Я просто вижу ...
home
None
[04/Apr/2011 23:21:17] "GET / HTTP/1.1" 302 0
set cookie!
[04/Apr/2011 23:21:17] "GET / HTTP/1.1" 302 0
set cookie!
[04/Apr/2011 23:21:17] "GET / HTTP/1.1" 302 0
set cookie!... ad infinitum until the browser intervenes
Если я перезагружаю страницу во второй раз, все в порядке: оператор print показывает правильное значение и перенаправления нет, поэтому cookie работает. Это всего лишь первый раз, когда код запускается, что он входит в бесконечный цикл.
Есть идеи? Есть ли лучшие способы решить эту проблему?
Проблема одинакова в Firefox и Chrome.
Спасибо!
ОБНОВЛЕНИЕ: Я думаю, проблема в том, как настроены URL-адреса: мне нужно найти способ перейти от «home» к «ldap» и обратно, каким-то образом. Я думаю, что на данный момент «ldap» просто перенаправляет на себя.