No se puede iniciar sesión en la página de administración de django con un nombre de usuario y contraseña válidos


No puedo iniciar sesión en la página de administración de django. Cuando introduzco un nombre de usuario y una contraseña válidos, simplemente aparece la página de inicio de sesión de nuevo, sin mensajes de error

Esta pregunta está en el django FAQ, pero he repasado las respuestas allí y todavía no puedo pasar la pantalla de inicio de sesión inicial.

Estoy usando django 1.4 en ubuntu 12.04 con apache2 y modwsgi.

He confirmado que estoy registrando el administrador en el archivo admin.py, me aseguré de syncdb después de agregar INSTALLED_APPS. Cuando introduzco la contraseña incorrecta, obtengo un error, por lo que mi usuario administrador se está autenticando, simplemente no procede a la página de administración.

He intentado configurar SESSION_COOKIE_DOMAIN a la IP de la máquina y a Ninguna. (Confirmado que el dominio cookie se muestra como IP de la máquina en chrome)

Además, se ha comprobado que el usuario se autentica a través del shell:

>>> from django.contrib.auth import authenticate
>>> u = authenticate(username="user", password="pass")
>>> u.is_staff
True
>>> u.is_superuser
True
>>> u.is_active 
True

Intento de inicio de sesión utilizando IE8 y chrome canary, ambos resultados en el mismo retorno a la pantalla de inicio de sesión.

Es ¿hay algo más que me estoy perdiendo????

Settings.py

...
MIDDLEWARE_CLASSES = (
    'django.middleware.gzip.GZipMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.middleware.transaction.TransactionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)
AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',)
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.admin',    
    'django.contrib.staticfiles',
    'django.contrib.gis',
    'myapp.main',
)

SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_SAVE_EVERY_REQUEST = True
SESSION_COOKIE_AGE = 86400 # sec
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_NAME = 'DSESSIONID'
SESSION_COOKIE_SECURE = False

Urls.py

from django.conf.urls.defaults import * #@UnusedWildImport
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.contrib import admin

admin.autodiscover()

urlpatterns = patterns('',
    (r'^bin/', include('myproject.main.urls')),    
    (r'^layer/r(?P<layer_id>\d+)/$', "myproject.layer.views.get_result_layer"),
    (r'^layer/b(?P<layer_id>\d+)/$', "myproject.layer.views.get_baseline_layer"),
    (r'^layer/c(?P<layer_id>\d+)/$', "myproject.layer.views.get_candidate_layer"),    
    (r'^layers/$', "myproject.layer.views.get_layer_definitions"),
    (r'^js/mapui.js$', "myproject.layer.views.view_mapjs"),
    (r'^tilestache/config/$', "myproject.layer.views.get_tilestache_cfg"),
    (r'^admin/', include(admin.site.urls)),  
    (r'^sites/', include("myproject.sites.urls")),  
    (r'^$', "myproject.layer.views.view_map"),
)


urlpatterns += staticfiles_urlpatterns()

Versión de Apache:

Apache/2.2.22 (Ubuntu) mod_wsgi/3.3 Python/2.7.3 configured

Apache apache2 / sites-available / default:

<VirtualHost *:80>
        ServerAdmin ironman@localhost
        DocumentRoot /var/www/bin
        LogLevel warn
        WSGIDaemonProcess lbs processes=2 maximum-requests=500 threads=1
        WSGIProcessGroup lbs
        WSGIScriptAlias / /var/www/bin/apache/django.wsgi
        Alias /static /var/www/lbs/static/
</VirtualHost>
<VirtualHost *:8080>
        ServerAdmin ironman@localhost
        DocumentRoot /var/www/bin
        LogLevel warn
        WSGIDaemonProcess tilestache processes=2 maximum-requests=500 threads=1
        WSGIProcessGroup tilestache
        WSGIScriptAlias / /var/www/bin/tileserver/tilestache.wsgi
</VirtualHost>

UPDATE

La página de administración continúa cuando se utiliza el servidor de desarrollo a través de runserver por lo que parece un problema de wsgi/apache. Todavía no lo he descubierto.

SOLUCIÓN

El problema era que tenía el archivo de configuración SESSION_ENGINE valor establecido en 'django.contrib.sessions.backends.cache' sin tener el CACHE_BACKEND correctamente configurado.

He cambiado el SESSION_ENGINE a 'django.contrib.sessions.backends.db' que resolvió el problema.

Author: monkut, 2012-08-10

16 answers

Pasos para depurar:

  • Asegúrese de que su base de datos esté sincronizada
    • Compruebe que tiene una tabla django_session
  • Intenta autenticarte
    • ¿Ves que se está creando un registro en la tabla django_session?

SI NO

  • eliminar configuraciones no estándar
    • AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend",)
    • SESSION_EXPIRE_AT_BROWSER_CLOSE = Verdadero
    • SESSION_SAVE_EVERY_REQUEST = True
    • SESSION_COOKIE_AGE = 86400 # sec
    • SESSION_COOKIE_DOMAIN = None
    • SESSION_COOKIE_NAME = 'DSESSIONID'
    • SESSION_COOKIE_SECURE = False
  • Asegúrese de que su base de datos esté sincronizada
    • Compruebe que tiene una tabla django_session
  • Intenta autenticarte
    • ¿Ves que se está creando un registro en la tabla django_session?

Hazme saber si esto aparece cualquier depuración útil.

Archivo de configuración de ejemplo: https://github.com/fyaconiello/Django-Blank-Bare-Bones-CMS/blob/master/dbbbcms/settings.py

 42
Author: Francis Yaconiello,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-24 13:39:20
>>> from django.contrib.auth import authenticate
>>> u = authenticate(username="user", password="pass")
>>> u.is_staff True
>>> u.is_superuser True

Is there something else I'm missing????

u.is_active debe ser True

 9
Author: Burhan Khalid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-23 09:40:09

Tuvimos un problema similar en nuestra aplicación y estos podrían ayudar:

  1. Usar el comando cleanup para borrar sesiones antiguas de django_sessions

  2. Compruebe el tamaño de la cookie en Firefox (firebug) o chrome developer tools. Porque la mensajería está habilitada por defecto en admin (django.contrib.mensaje.middleware.MessageMiddleware), el tamaño de la cookie a veces supera los 4096 bytes con varias ediciones y eliminaciones. Una prueba rápida es eliminar la cookie de "mensaje" y ver si puede inicie sesión después de eso.

Y en realidad terminamos cambiando a la ruta nginx/uwsgi debido a este y otros problemas relacionados con la memoria con apache. No he visto esto repetido en nginx desde entonces.

 3
Author: Raj J,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-28 08:36:38

No creo que la contraseña de administrador esté almacenada en settings.py archivo. Se crea la primera vez que syncdb. Estoy pensando que o bien se saltó la creación del superusuario o simplemente hizo un error tipográfico. Intente ejecutar en terminal en la raíz de sus proyectos.:

Python django-admin.py createsuperuser

Que le permitirá volver a escribir su inicio de sesión de administrador. También se ve aquí https://docs.djangoproject.com/en/dev/ref/django-admin/

 2
Author: Kei Nagase,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-12 02:48:41

Suena como un problema de sesión porque después de la publicación se le redirige e inmediatamente el sistema ha olvidado que ha iniciado sesión.

Intente lo siguiente:

  1. compruebe que el backend de su sesión está funcionando.
  2. cámbialo con el backend de caché si usas el backend de caché de base de datos para comprobar si el middleware de transacciones está jugando.
  3. pruebe el motor db y compruebe si hay sesiones almacenadas en la tabla db
 2
Author: frog32,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-23 09:34:54

No estoy exactamente seguro, pero el problema podría estar con su configuración de URL, concretamente en estas dos líneas:

(r'^admin/', include(admin.site.urls)),  
(r'^sites/', include("myproject.sites.urls")),

Hace más tiempo, tuve problemas para navegar por el administrador de mi proyecto Django porque una única configuración de URL sobrescribió una parte de la url de administrador. Parece que a Django no le gusta cuando especifica una configuración de URL personalizada que contiene elementos que también forman parte de la URL de administración. En su caso, tiene la aplicación django.contrib.sites habilitada en su settings.py. Puedes acceder el panel de administración de esta aplicación yendo a http://127.0.0.1:8000/admin/sites/. Puede ser que su configuración de URL con r'^sites/' en ella anule una parte de la url del administrador. Intente cambiar el nombre de esta configuración de URL específica o deshabilite django.contrib.sites en INSTALLED_APPS para fines de prueba.

Tenga en cuenta que esto es solo una suposición. Todo lo que sé es que el panel de administración de Django es un poco exigente con las configuraciones de URL que usan nombres similares como sus propias URL. No puedo probarlo yo mismo en este momento. Pero tal vez esto te ayude un poco.

 1
Author: pemistahl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-22 17:23:43

Compruebe que tiene al menos uno site para trabajar.

>>> from django.contrib.sites.models import Site
>>> Site.objects.count()
(0.048) SELECT COUNT(*) FROM `django_site`; args=()
1

Si ves 0 aquí - crea uno.

 1
Author: Alexey Kachayev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-27 11:16:22

Revisando algunos otros artículos sobre este tema, podría estar relacionado con sys.camino. Puede comprobar y comparar sys.ruta al ejecutar el servidor dev y al ejecutar WSGI.

Para algunos detalles, echa un vistazo este y ese artículo. Pero yo revisaría el sistema.ruta primero, antes de entrar en los detalles de este artículo.

 1
Author: schacki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-27 14:13:38

Tuve este problema. El problema es que en producción establecí dos variables en True que me permitieron conectarme al sitio usando https.

SESSION_COOKIE_SECURE y CSRF_COOKIE_SECURE se debe establecer en False si está desarrollando en http localhost. Cambiar estas dos variables a False me permitió iniciar sesión en el sitio de administración cuando desarrollaba localmente.

 1
Author: Marquistador,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-20 16:02:46

Descargo de responsabilidad: Todavía no puedo agregar comentarios, por lo que tengo que pedir una aclaración aquí proponiendo una solución al mismo tiempo. Lo siento por eso.

¿ El usuario cierra la sesión inmediatamente después de iniciar sesión? algo así como este problema

Puede comprobarlo de muchas maneras, le sugiero que agregue un gancho a la señal de cierre de sesión (puede ponerlo en su models.py):

from django.contrib.auth.signals import user_logged_out

def alertme(sender, user, request, **kwargs):
    print ("USER LOGGED OUT!") #or more sophisticate logging

user_logged_out.connect(alertme)

Luego intente iniciar sesión y verifique si el mensaje aparece en su consola. Si aparece, entonces usted tiene que comprobar si usted tiene un redireccionar o una plantilla personalizada llamando a cerrar sesión después de iniciar sesión. Espero que te ayude a encontrar el problema.

 0
Author: furins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:46

Intenta crear el usuario con :

python manage.py createsuperuser

Tengo el mismo problema cuando creo la base de datos en una máquina de prueba y migrar al servidor de implementación...

 0
Author: Lapin-Blanc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-25 08:38:45

Tuve el mismo problema y se resolvió después de reiniciar el servidor:

systemctl restart nginx
 0
Author: lapin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-16 08:03:10

Puede asegurarse de que el usuario creado ha sido marcado como Is_staff = True, a veces me olvido de marcar esto para permitir a los usuarios iniciar sesión en django admin

 0
Author: Timothy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-13 12:20:22

Tuve un problema relacionado en el que intentaba iniciar sesión y la página se colgaba antes de que el socket finalmente se matara. Resultó que de hecho estaba conectado, pero uno de los procesadores de señal de inicio de sesión se estaba congelando.

Celery no pudo pasar sus tareas asíncronas a RabbitMQ porque el servidor RabbitMQ no pudo iniciarse.

 0
Author: kokociel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-09 21:09:41

Para mí, no pude iniciar sesión en la página de administración en Firefox, pero podría iniciar sesión en Chrome. El problema era que tenía CSRF_COOKIE_PATH establecido en mi settings.py. Nunca use eso. No funciona correctamente en django 1.8.

 0
Author: max,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-09 18:32:05

Asegúrese de que la tabla de usuarios de la base de datos que tiene la siguiente entrada es verdadera:

is_staff  => True  (if exit).
is_active  => True .
is_superuser => True.
 0
Author: Dnyaneshwar Mahajan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-27 10:19:17