Я задавал подобный вопрос раньше, но я провел еще несколько исследований, и эта итерация должна быть немного другой.Похоже, что у нескольких пользователей SO возникла проблема с регистрацией и входом пользователей в систему в одном представлении, и на самом деле на нее не было ответа.
Проблема в том, что я регистрирую, аутентифицирую и регистрирую пользователя в одном представлении Django.Для большинства пользователей это нормально, но для других пользователей их последующий запрос (они нажимают на ссылку на моем сайте) возвращает анонимного пользователя.Почему-то вошедший в систему пользователь теряет свой сеанс и перенаправляется на страницу моего сайта, где не требуется проверка подлинности.
Когда они затем регистрируются в режиме чистого входа в систему (в отличие от просмотра регистра + входа в систему), данные сеанса остаются в такте.Кажется, проблема действительно заключается в регистрации и регистрации в одном представлении.
См. Этот пост по той же проблеме: https://stackoverflow.com/questions/1693726/problem-with-combined-authentication-login-view.
Было высказано предположение, что это может быть проблема с многопоточностью.Я также видел, что это предполагает, что это относится к серверной части для кэширования данных сеанса.
Есть мысли о том, с чем это связано?Я не могу воспроизвести ошибку, которая действительно сдерживает меня.
РЕДАКТИРОВАТЬ - я должен отметить, что я использую сеансы, поддерживаемые базой данных по умолчанию.
Вот мой регистр / логин
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/')