Уведомления

Группа в Telegram: @pythonsu

#1 Май 5, 2009 19:24:35

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

login() c разных мест и редирект

Hi всем.

Хотел модифицировать встроенный view login (/django/trunk/django/contrib/auth/views.py)

для того чтобы после успешного логирования был редирект на эту же самую страницу. То есть форма логирования у меня “весит на всех страницах” и пользователь может логироваться

Для этого я переделываю вьюв так, что возврат из функции по успешному логированию происходит так:

return HttpResponse(request.META['HTTP_REFERER'])
То есть все бы хорошо но вопрос security я думаю здесь на низком уровне, потому что HTTP_REFERER легко изменяется, а жесткое прописывание в settings url-а для редиректа после успешного логирования не подходит, так как урл логирование происходит с разных “мест”.
Также если использовать hidden поле в форме то value ему нужно передовать тоже вычесленный на основе тек. урл

Какие есть правильные пути решения?

Спасибо

Офлайн

#2 Май 5, 2009 22:08:27

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

login() c разных мест и редирект

э как бы есть ?next= для этого
из доков собственно

def my_view(request):
if not request.user.is_authenticated():
return HttpResponseRedirect('/login/?next=%s' % request.path)
# ...
+ http://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.decorators.login_required имеет параметр redirect_field_name

Офлайн

#3 Май 5, 2009 22:24:54

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

login() c разных мест и редирект

А как насчет решение с request.META насколько оно ужасно?

Офлайн

#4 Май 5, 2009 23:10:46

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

login() c разных мест и редирект

ну как вариант сойдёт, но я предпочитаю решения “из коробки”

Офлайн

#5 Май 5, 2009 23:19:26

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

login() c разных мест и редирект

slav0nic
ну как вариант сойдёт,
Я имею ввиду есть ли какие “подводные камни” в плане безопастности итп?

Офлайн

#6 Май 5, 2009 23:37:22

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

login() c разных мест и редирект

в принципе нет, но например прокси HTTP_REFERER режет

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version