He hecho una pregunta similar anteriormente, pero he hecho más investigación y esta iteración debería ser un poco diferente. Parece que varios usuarios de SO han tenido un problema con el registro e inicio de sesión de los usuarios en una sola vista y realmente no se ha respondido.Pérdida de sesión de Django 1.2
El problema es que me registro, autentico e inicio de sesión de un usuario en una sola vista de Django. Para la mayoría de los usuarios está bien, pero para otros usuarios, su solicitud posterior (hacen clic en un enlace en mi sitio) devuelve un usuario anónimo. De alguna manera, el usuario conectado pierde su sesión y es redirigido a una página en mi sitio que no requiere autenticación.
Cuando inician sesión a través de una vista de inicio de sesión pura (a diferencia de la vista de registro + inicio de sesión), los datos de la sesión permanecen intactos. El problema parece ser el registro y el inicio de sesión en una sola vista.
Ver esta publicación para el mismo tema: https://stackoverflow.com/questions/1693726/problem-with-combined-authentication-login-view.
Se ha sugerido que esto es potencialmente un problema de enhebrado. También lo he visto sugiriendo que se relaciona con el back-end de los datos de la sesión de caché.
¿Alguna idea de lo que realmente se relaciona? No puedo reproducir el error, lo que realmente me detiene.
EDITAR - Debo señalar que estoy usando las sesiones respaldadas por la base de datos predeterminadas.
Aquí está mi punto de vista registro/login
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/')
¿Está utilizando mod python como la publicación relacionada? Cuando comencé a aprender Python fui fuertemente dirigido en mod_wsgi.No puedo decir que esto solucionará ningún problema. –
Hola James, estoy usando mod_wsgi. – Ben
Le ruego a alguien que me ayude aquí ... – Ben