Найти - Пользователи
Полная версия: login() c разных мест и редирект
Начало » Django » login() c разных мест и редирект
1
romankrv
Hi всем.

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

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

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

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

Спасибо
slav0nic
э как бы есть ?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
romankrv
А как насчет решение с request.META насколько оно ужасно?
slav0nic
ну как вариант сойдёт, но я предпочитаю решения “из коробки”
romankrv
slav0nic
ну как вариант сойдёт,
Я имею ввиду есть ли какие “подводные камни” в плане безопастности итп?
slav0nic
в принципе нет, но например прокси HTTP_REFERER режет
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB