Потеря сеанса Django 1.2

Я задавал аналогичный вопрос раньше, но я ' Я провел еще несколько исследований, и эта итерация должна быть немного другой. Кажется, что у нескольких пользователей SO возникла проблема с регистрацией и входом в систему в одном представлении, и на нее не было дано ответа.

Проблема в том, что я регистрирую, аутентифицирую и авторизуюсь пользователя в одном представлении Django. Для большинства пользователей это нормально, но для других пользователей их последующий запрос (они щелкают ссылку на моем сайте) возвращает анонимного пользователя. Каким-то образом вошедший в систему пользователь теряет сеанс и перенаправляется на страницу моего сайта, которая не требует аутентификации.

Когда они затем входят в систему с использованием чистого представления входа в систему (в отличие от представления регистрации + входа в систему), данные сеанса остаются неизменными. На самом деле проблема заключается в регистрации и регистрации в одном представлении.

См. Этот пост для той же проблемы: https: // stackoverflow. com / questions / 1693726 / проблема-с-комбинированной-аутентификацией-представлением-входом .

Было высказано предположение, что это потенциально проблема с потоками. Я также видел предположение, что это относится к бэкэнду для кэширования данных сеанса.

Есть мысли о том, к чему это на самом деле относится? Я не могу воспроизвести ошибку, что меня действительно сдерживает.

РЕДАКТИРОВАТЬ - Я должен отметить, что я использую сеансы, поддерживаемые базой данных по умолчанию.

Вот мой вид регистрации / входа в систему

def splash_register(request):
  if request.session.get('beta'):

    if request.method=='POST':
        userform=MyUserCreationForm(request.POST)
        if userform.is_valid():
            #username of <30 char is required by Django User model.  I'm storing username as a hash of user email 

            user=userform.save(commit=False)
            user.username=hash(user.email)
            user.save()



            username=user.username
            password=str(userform.cleaned_data['password'])
            user=auth.authenticate(username=username, password=password)
            if user is not None:
                auth.login(request,user)
                request.session['first_visit']=True
                return HttpResponseRedirect("/")
            else:
                return HttpResponseRedirect('/splash/register/')
        else:
            userform=MyUserCreationForm(request.POST)
            return render_to_response("website/splash_register.html", {'userform':userform}, context_instance=RequestContext(request))
    return render_to_response("website/splash_register.html", context_instance=RequestContext(request))     
else:
    return HttpResponseRedirect('/splash/')        

5
задан Cœur 29 July 2017 в 11:21
поделиться