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.
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
?
- ¿Ves que se está creando un registro en la tabla
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
- Compruebe que tiene una tabla
- Intenta autenticarte
- ¿Ves que se está creando un registro en la tabla
django_session
?
- ¿Ves que se está creando un registro en la tabla
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
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
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:
-
Usar el comando cleanup para borrar sesiones antiguas de django_sessions
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.
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/
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:
- compruebe que el backend de su sesión está funcionando.
- 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.
- pruebe el motor db y compruebe si hay sesiones almacenadas en la tabla db
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.
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.
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.
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.
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.
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...
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
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
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.
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.
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.
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