Уведомления

Группа в Telegram: @pythonsu

#1 Июль 13, 2017 09:28:54

Elaphe
Зарегистрирован: 2015-02-04
Сообщения: 125
Репутация: +  5  -
Профиль   Отправить e-mail  

Сбрасывается сессия при редиректе.

Есть сайт, где авторизация сделана таким образом:

 def index(request):
    if request.method == 'POST':
        form = LoginForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            user = Users.objects.get(login = cd.get('login'), password = cd.get('password'))
            rights = UserGroupRighs.objects.filter(group = user.group)
            request.session['login'] = user
            request.session['user_rights'] = rights
            return redirect(start)
В более ранних (до 1.7 включительно) версиях Django эта функция работала нормально, данные сохранялись в сессии. Начиная с версии 1.8, сессия при переходе на другую страницу сбрасывается.
Причем у меня есть другой сайт, работающий на Django 1.9, где авторизация организована так же - там все работает, поэтому видимо, дело в каких-то настройках. Но с виду все нормально:
 SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
MIDDLEWARE_CLASSES	= [
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware']
INSTALLED_APPS = 	(...
    'django.contrib.sessions',
 ...)
Гугл ничего толкового не подсказал, в документации тоже никаких наводок.

Отредактировано Elaphe (Июль 13, 2017 09:29:56)

Офлайн

#2 Июль 13, 2017 10:10:50

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Сбрасывается сессия при редиректе.

Объясните, в чем глобальный смысл такой странной авторизации? Чем не устраивает стандартная джанговская?



Офлайн

#3 Июль 13, 2017 10:37:34

Elaphe
Зарегистрирован: 2015-02-04
Сообщения: 125
Репутация: +  5  -
Профиль   Отправить e-mail  

Сбрасывается сессия при редиректе.

Это “наследство” от предыдущего программиста.
Почему именно так хз, может он видел какие-то скрытые преимущества или он просто контрол фрик
Есть мысль все это переписать, используя API django.contrib.auth и нашу модель, но, как обычно, работа над проектами идет в режиме “нужно было вчера”, так что пока так.

Офлайн

#4 Июль 13, 2017 10:45:54

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Сбрасывается сессия при редиректе.

Да там делать то нечего в принципе.
Elaphe, поверьте, что самые тяжелые ошибки в программе - это ошибки архитектуры. И чем дольше вы тяните с рефакторингом, тем больше косяков у вас будет накапливаться и тем сложнее их будет исправить.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version